Django应用程序可有效测量使用情况

django-souvenirs的Python项目详细描述


PyPIBuild StatusCoverage Report

Django网站上的用户有多活跃?当用户 已注册(User.date_joined)并且在他们登录时(User.last_login)。 但是会话是长寿的,所以这并不能真正回答问题。

纪念品是一款django应用程序,用于有效地测量用户随时间变化的活动,以及 通过api提供这些信息。

Souvenirs Album Cover

安装

PyPI获得最新的稳定版本

pip install django-souvenirs

或者来自github的最新提交

pip install -e git+git://github.com/appsembler/django-souvenirs.git#egg=souvenirs

添加到settings.py

INSTALLED_APPS+=['souvenirs',]MIDDLEWARE_CLASSES+=['souvenirs.middleware.SouvenirsMiddleware',]

迁移数据库

./manage.py migrate souvenirs

用法

有两个核心api调用:souvenez(“remember”)和 count_active_users

您可以根据需要为每个用户调用souvenez(user),默认情况下 将数据库条目的速率限制为每小时一次。如果使用提供的中间件, 然后每次请求都会自动调用souvenez

调用count_active_users查找 给定的时间段。例如:

>>> from souvenirs.control import count_active_users
>>> from django.utils import timezone
>>> from datetime import timedelta
>>> now = timezone.now()
>>> count_active_users(start=now - timedelta(days=1), end=now)
42

可以省略startend,这使得查询在 那个方向。上述调用实际上等同于省略end

>>> count_active_users(start=timezone.now() - timedelta(days=1))
42

这计算了所有时间内活动的用户总数,或者至少从 您安装了中间件:

>>> count_active_users()
1012

报告

纪念品为报告注册用户和活动提供了一些功能 在一段时间内。例如,查看2016年每个日历月的活动:

>>> from datetime import datetime
>>> from django.utils import timezone
>>> from souvenirs.reports import calendar_monthly_usage
>>> start = datetime(2016, 1, 1)  # inclusive
>>> end = datetime(2017, 1, 1)    # exclusive
>>> for d in calendar_monthly_usage(start=timezone.make_aware(start),
                                    end=timezone.make_aware(end)):
...   print(d['labels']['calendar_year_month'],
            d['usage']['registered_users'],
            d['usage']['activated_users'],  # User.is_active
            d['usage']['active_users'])
2016-01 12  10  9
2016-02 20  13  11
2016-03 38  16  10
2016-04 38  28  14
2016-05 38  29  20
2016-06 57  46  37
2016-07 62  58  43
2016-08 117 80  49
2016-09 175 300 75
2016-10 280 333 89
2016-11 420 360 99
2016-12 588 540 151

请参阅reports.py以了解其他报告功能,特别是启动时 在任意日期(而不是日历月)订阅。

设置

纪念品使用希望理智的默认设置为所有设置。这是你能做的 如果需要,覆盖:

SOUVENIRS_RATELIMIT_SECONDS:在数据库中记录活动用户的频率, 默认值3600

SOUVENIRS_CACHE_NAME:要用于速率限制的缓存, 默认值'default'

SOUVENIRS_CACHE_PREFIX:如何为速率限制缓存项加前缀, 默认值'souvenirs.'

SOUVENIRS_USAGE_REPORTS_FUNCTION:所有报告函数都调用 低级函数usage_for_periods。这可以被覆盖(可能 包装)如果您想使用纪念品报告功能生成 更丰富的数据,例如每个时间段合并一些其他数据。

贡献

若要参与此项目,请转到您自己的github用户,进行更改 在分支上,运行测试并打开拉取请求。如果你有hubtox 已安装,如下所示:

hub clone appsembler/django-souvenirs
cd django-souvenirs
git checkout -b my-awesome-feature
# hack hack hack!
tox --skip-missing-interpreters
git commit -am "my awesome commit"
hub fork  # for example agriffis/django-souvenirs
git push --set-upstream agriffis  # insert your github user here
hub pull-request

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

推荐PyPI第三方库


热门话题
utf 8在Java中编码法语字符?   Spring安全web应用程序中的javaajax请求   使用AWS Elastic Beanstalk记录java应用程序   java My方法运行了两次,而它们应该只运行一次并映射。get()正在影响所有条目   java基于特定接口的bean通过HttpInvoker导出bean   java xlsx文件在http请求中发送时已损坏/为空(0字节)   java修剪字符串中的所有“空格”   java如何为二维数组生成列和行和方法?   java在使用配置类时使用@PreAuthorize或@Secured with Jersey   java SmartGWT不能与Maven和Jetty Chrome Ubuntu x64一起使用   java在Google App Engine中,对于一个包含许多延迟任务的任务队列,最佳的存储桶大小是多少?   javajaxb:从XML子树解组?   java如何使媒体播放器在按设备后退按钮从片段返回活动时停止   从java进程中跳过批处理中的暂停命令   java Vaadin Designer不是可编辑的自定义组件   java递归打印数组中等于给定和的所有子集   java上传覆盖率。ec文件到sonar Android   java如何在游戏中添加按钮,使两者都可见?