用于有效地向项目添加分析的库。

analytics的Python项目详细描述


https://secure.travis-ci.org/numan/py-analytics.png?branch=master

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_dayget_metric_by_weekget_metric_by_month返回series作为一组字符串,而不是日期/日期时间对象的列表

待办事项

  • 可能会增加更多的后端…?
  • 添加一个api,以便可以将其部署为独立服务(http、protocolbuffers…)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
爪哇太阳报。安全验证器。ValidatorException:PKIX路径生成失败   java理解为什么在onDispatchTouchEvent()返回True后仍调用onClick()   java如何在资源包中使用JSF标记/如何在资源包中重写URL?   java什么是流控制异常的替代方案?   java使用Spring数据JPA/MongoDB交叉存储,一个查询可以跨越两个数据库吗?   Apache Sling/felix中的java OSGi slf4j日志记录   为什么当我们想要水平/垂直旋转矩阵时,我们要把这个项除以2?   尝试从外部网页接收JSON字符串时出现安卓 Java NullPointerException   java执行异常:从Callable调用方法时   java在jetty上以调试模式运行webapp,使用maven jetty插件在intellij中构建成功(应用程序应在调试模式下启动)   带有内存数据库的linux Java应用程序的构建时间太长   基于java的随机数单元测试算法   java类型javax。摆动JComponent无法解析   Google日历API和UI小部件Java   java tomcat没有突然和任意地响应   java无法使用jsoup在html中获取图像src   我无法让Java接受键盘输入字符串   java如何开始使用Bambol而不让部署永远继续?   java如何使用另一个类的actionPerformed方法删除一个类/组件中的按钮?   java JSON反序列化brakets{}中的一系列对象