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

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第三方库


热门话题
java如何使用jdbc和jsp将数据插入mysql?   Oracle Java 7密钥工具无法将pkcs11密钥库导入JKS:非PKCS 8编码   java使用接口获取Todo id或JPA getOne方法速度更快   Java获得给定日期的下个月的第一天   java使用单个“更新”按钮将测试表的自动增量值插入分数表   BottomNavigationView下坐标布局上的java Fab按钮   java在安卓 OnPreferenceClickListener中调用非静态方法   java在MediaStore中在哪里可以找到图像的文件路径   java Spring boot 2.2 activemq jetty冲突   java集合值在所有列表变量中都得到更新   java如何在SpringMVC+maven项目中获取web上下文路径?   java不可变类:空白的最后字段可能未被初始化   在Android中实现ads的java程序?   java将数据库任务与spring petclinic应用程序分离   同一实体列上的java双向关联不能为null