作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
使用 tornado,我想创建一些中间件魔法,确保我的 SQLAlchemy session 得到正确关闭/清理,这样对象就不会从一个请求共享到下一个请求。诀窍在于,由于我的一些 Tornado 处理程序是异步的,所以我不能只为每个请求共享一个 session 。
所以我只能尝试创建一个知道如何为每个请求创建新 session 的 ScopedSession。我需要做的就是为我的代码定义一个 scopefunc,它可以将当前正在执行的请求变成某种唯一的键,但是我似乎无法弄清楚如何获取当前请求任何一个时间点(在当前 RequestHandler 的范围之外,我的函数都无法访问它)。
有什么我可以做的吗?
最佳答案
您可能希望将 Session
与请求本身相关联(即,如果不方便,请不要使用 scopedsession)。然后你可以说,request.session
。仍然需要在开始/结束时有 Hook 以进行设置/拆卸。
编辑:自定义作用域函数
def get_current_tornado_request():
# TODO: ask on the Tornado mailing list how
# to acquire the request currently being invoked
Session = scoped_session(sessionmaker(), scopefunc=get_current_tornado_request)
关于python - SQLAlchemy+ Tornado : How to create a scopefunc for SQLAlchemy's ScopedSession?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8674984/
我是一名优秀的程序员,十分优秀!