2024-03-29 04:42:22 发布
网友
我正在用webpy编写一个小web应用程序,我想知道是否有人对我遇到的一个小问题有任何信息。在
我写了一个小ORM系统,它似乎运行得很好。理想情况下,我希望将其与webpy缝合在一起,但似乎只是按原样使用它会导致线程问题(DB connection是跨线程边界实例化/访问的,或者是异常状态)。在
有人知道我如何(在webpy中)在与页面处理代码其余部分相同的线程上创建DB连接吗?在
我们使用SQLAlchemy网页.py并使用钩子为每个请求创建和关闭数据库连接。SQLAlchemy处理池,因此并非每个连接都是tcp连接。在
要使用的线程本地存储是网站.ctx也就是说,任何时候你进入网站.ctx您只能看到由该线程设置的属性。在
我们的代码如下所示:
def sa_load_hook(): web.ctx.sadb = Session() def sa_unload_hook(): web.ctx.sadb.close() web.loadhooks['sasession'] = sa_load_hook web.unloadhooks['sasession'] = sa_unload_hook
将Session替换为db connection函数,它应该可以正常工作。在
我试试这个。免责声明:我对网页.py框架。在
我建议您尝试以下方法:
(1)创建全局线程.local实例来跟踪线程本地对象(在您的情况下,它将只跟踪一个对象,一个数据库会话)。在
import threading serving = threading.local()
(2)在每个请求开始时,创建一个db连接/会话并将其保存在线程.local实例。如果我正确理解web.py documentation,您可以执行以下操作:
(3)在控制器方法中(如果它们在web.py?),无论何时需要数据库连接,请使用服务.dbconnection. 在
我们使用SQLAlchemy网页.py并使用钩子为每个请求创建和关闭数据库连接。SQLAlchemy处理池,因此并非每个连接都是tcp连接。在
要使用的线程本地存储是网站.ctx也就是说,任何时候你进入网站.ctx您只能看到由该线程设置的属性。在
我们的代码如下所示:
将Session替换为db connection函数,它应该可以正常工作。在
我试试这个。免责声明:我对网页.py框架。在
我建议您尝试以下方法:
(1)创建全局线程.local实例来跟踪线程本地对象(在您的情况下,它将只跟踪一个对象,一个数据库会话)。在
(2)在每个请求开始时,创建一个db连接/会话并将其保存在线程.local实例。如果我正确理解web.py documentation,您可以执行以下操作:
^{pr2}$(3)在控制器方法中(如果它们在web.py?),无论何时需要数据库连接,请使用服务.dbconnection. 在
相关问题 更多 >
编程相关推荐