我的数据库是远程计算机上的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执行此操作的简单方法。这是可能的还是我可以尝试更好的优化?
答案 0 :(得分:3)
默认情况下启用连接池。
如果在连接字符串中添加“pool_size = 0”,则会禁用连接池,并假设强制打开/关闭每个连接的行为。而不是让他们打开。
如果您需要更多线程(听起来像),请增加pool_size并查看会发生什么。
或者,是的,您可以使用DAL并执行db.close()并在第一次请求时自动重新打开连接
答案 1 :(得分:0)