一个可扩展的烧杯助手包来管理烧杯会话
BeakerHelpers的Python项目详细描述
beakerhelpers是一个Beaker扩展,可以显示活动会话并清除 旧的。目前它只适用于beaker.ext.database存储后端。
beakerhelpers也是一个名称空间包,因此可以在 这个namespace。
您可以在github.com找到git存储库
获取/显示会话使用情况
您可以调用get_sessions获取活动会话(dict)的列表:
>>> import sqlalchemy >>> from beakerhelpers.sessions import get_sessions >>> sessions_table = sqlalchemy.Table('beaker_cache', ... sqlalchemy.MetaData('sqlite:///my.db'), autoload=True) >>> get_sessions(sessions_table, timeout=3600) # timeout in seconds [{ '_accessed_time': datetime.datetime(2010, 1, 1, 10, 10, 10), '_creation_time': datetime.datetime(2010, 1, 1, 08, 40, 00), 'user_name': u'john@doe.com', }]
上面的表单适合python访问。如果你想提供这些数据 对于用户,可以使用具有相同参数的show_sessions:
>>> print show_sessions(sessions_table, timeout=3600) -------------------------------------------------------- _accessed_time | _creation_time | user_name -------------------------------------------------------- 2010-01-01 10:10:10 | 2010-01-01 08:40:00 | john@doe.com
但是,您可以使用paster beakersessions从 控制台:
$ <env>/bin/paster beakersessions cfg/prod.ini -------------------------------------------------------- _accessed_time | _creation_time | user_name -------------------------------------------------------- 2010-01-01 10:10:10 | 2010-01-01 08:40:00 | john@doe.com
在这种情况下,cfg/prod.ini文件应该是可加载的 配置文件。beakerhelpers希望在[app:main]中找到这些键。 cfg/prod.ini的部分
- ^{tt5}$ = ext:database - the only supported backend (yet)
- ^{tt6}$ - an SQLAlchemy engine URL
- ^{tt7}$ - session timeout in seconds
- ^{tt8}$ - (optional) session storage table. According to beaker.ext.database, defaults to beaker_cache.
paster beakersessions命令还接受两个可选参数:
^{tt10}$ - beaker key prefix in the config file, defaults to beaker.session
^{tt11}$ - do not show sessions older than the timeout. Timeout examples:
- 3s - 3 seconds
- 14m - 14 minutes
- 36h - 36 hours
- 2d - 2 days
- 0 - show all sessions (ignore timeout even in the config file)
If not provided the timeout will be taken from the config file, <prefix>.timeout (seconds).
会话清除用法
可以使用python脚本中的cleanup_sessions删除旧的 会话:
>>> import sqlalchemy >>> from beakerhelpers.sessions import cleanup_sessions >>> sessions_table = sqlalchemy.Table('beaker_cache', ... sqlalchemy.MetaData('sqlite:///my.db'), autoload=True) >>> cleanup_sessions(sessions_table, timeout=3600) # timeout in seconds
超过1小时的会话将被清除。但是,会话清理是 作为粘贴脚本调用特别方便:
$ <env>/bin/paster beakercleanup cfg/prod.ini
它需要相同的配置文件结构并采用相同的可选参数 就像烧杯一样。但是,在本例中,会话比^{tt13}旧$ 将被删除。
注意-鸟瞰和鸟瞰清理用户
由于命名空间问题,BeakerShowSessions和BeakerCleanup不能 安装PIP和/或简易安装。他们的功能被合并到这个 打包和访问变得更简单。我们强烈建议使用鸟嘴钳 相反。