在web2py请求周期中关闭并重新启动数据库连接

时间:2012-10-09 02:35:58

标签: python web2py

我的数据库是远程计算机上的SQL Server,我遇到了相当多的延迟。 我在控制器中有一个方法,结构如下:

def submitData():
    parameters = db.site.select(...)
    results = some_http_post()  # posts data to remote server,
    if results:
        rec = db.status_table.insert(...)
        rec.status_tabl.update(...)

往往会发生的事情是some_http_post()需要几秒钟才能得到响应并且我的线程用完了 当我向web2py发送超过6个并发请求的submitData时,我遇到请求冻结,而不是出现数据库错误。 这具有停止任何进一步的web2py请求的效果。

我最好在调用some_http_post之前关闭数据库连接并在它之后启动另一个数据库连接,但我没有看到使用DAL API执行此操作的简单方法。这是可能的还是我可以尝试更好的优化?

2 个答案:

答案 0 :(得分:3)

默认情况下启用连接池。

如果在连接字符串中添加“pool_size = 0”,则会禁用连接池,并假设强制打开/关闭每个连接的行为。而不是让他们打开。

如果您需要更多线程(听起来像),请增加pool_size并查看会发生什么。

或者,是的,您可以使用DAL并执行db.close()并在第一次请求时自动重新打开连接

答案 1 :(得分:0)