用于有效地向项目添加分析的库。
analytics的Python项目详细描述
PY Analytics是一个库,旨在使作为任何项目的一部分提供分析变得容易。
该项目的目标是使存储和检索分析数据变得容易。它没有提供 任何可视化数据的方法。
目前,存储数据只支持Redis。
安装
您可以使用pypi安装最新的官方稳定版本:
>>> pip install analytics
或者直接从github获取最新版本:
>>> pip install -e git+https://github.com/numan/py-analytics.git#egg=analytics
要求
必需
需求应该由setuptools处理,但如果不是,则需要以下python包:
- Nydus
- redis
- DateUtil
可选
- 雇工
分析。创建分析后端
创建允许存储和检索度量的分析对象:
>>> from analytics import create_analytic_backend >>> >>> analytics = create_analytic_backend({ >>> 'backend': 'analytics.backends.redis.Redis', >>> 'settings': { >>> 'defaults': { >>> 'host': 'localhost', >>> 'port': 6379, >>> 'db': 0, >>> }, >>> 'hosts': [{'db': 0}, {'db': 1}, {'host': 'redis.example.org'}] >>> }, >>> })
在内部,Redis分析后端使用nydus在redis实例集群上分发度量数据。
有两个必需的参数:
- backend:后端类的完整路径,该类应扩展analytics.backends.base.base analytics backend
- settings:初始化后端所需的设置。对于Redis后端,这是redis集群中主机的列表。
示例用法
from analytics import create_analytic_backend import datetime analytics = create_analytic_backend({ "backend": "analytics.backends.redis.Redis", "settings": { "hosts": [{"db": 5}] }, }) year_ago = datetime.date.today() - datetime.timedelta(days=365) #create some analytics data analytics.track_metric("user:1234", "comment", year_ago) analytics.track_metric("user:1234", "comment", year_ago, inc_amt=3) #we can even track multiple metrics at the same time for a particular user analytics.track_metric("user:1234", ["comments", "likes"], year_ago) #or track the same metric for multiple users (or a combination or both) analytics.track_metric(["user:1234", "user:4567"], "comment", year_ago) #retrieve analytics data: analytics.get_metric_by_day("user:1234", "comment", year_ago, limit=20) analytics.get_metric_by_week("user:1234", "comment", year_ago, limit=10) analytics.get_metric_by_month("user:1234", "comment", year_ago, limit=6) #create a counter analytics.track_count("user:1245", "login") analytics.track_count("user:1245", "login", inc_amt=3) #retrieve multiple metrics at the same time #group_by is one of ``month``, ``week`` or ``day`` analytics.get_metrics([("user:1234", "login",), ("user:4567", "login",)], year_ago, group_by="day") >> [....] #set a metric count for a day analytics.set_metric_by_day("user:1245", "login", year_ago, 100) #sync metrics for week and month after setting day analytics.sync_agg_metric("user:1245", "login", year_ago, datetime.date.today()) #retrieve a count analytics.get_count("user:1245", "login") #retrieve a count between 2 dates analytics.get_count("user:1245", "login", start_date=datetime.date(month=1, day=5, year=2011), end_date=datetime.date(month=5, day=15, year=2011)) #retrieve counts analytics.get_counts([("user:1245", "login",), ("user:1245", "logout",)]) #clear out everything we created analytics.clear_all()
向后不兼容的更改
v0.6.0
- 这个版本引入了前缀。任何旧的分析数据都是不可访问的。
v0.5.2
- get_metric_by_day、get_metric_by_week和get_metric_by_month返回series作为一组字符串,而不是日期/日期时间对象的列表
待办事项
- 可能会增加更多的后端…?
- 添加一个api,以便可以将其部署为独立服务(http、protocolbuffers…)