Django应用程序可有效测量使用情况
django-souvenirs的Python项目详细描述
Django网站上的用户有多活跃?当用户 已注册(User.date_joined)并且在他们登录时(User.last_login)。 但是会话是长寿的,所以这并不能真正回答问题。
纪念品是一款django应用程序,用于有效地测量用户随时间变化的活动,以及 通过api提供这些信息。
安装
从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
可以省略start或end,这使得查询在 那个方向。上述调用实际上等同于省略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用户,进行更改 在分支上,运行测试并打开拉取请求。如果你有hub和tox 已安装,如下所示:
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