1

我的数据库是远程机器上的 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() 需要几秒钟才能获得响应,并且我的线程用完了当我用超过 6 个并发请求提交数据时点击 web2py 时,我遇到了请求冻结,而不是出现 DB 错误。这具有停止任何进一步的 web2py 请求的效果。

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

4

2 回答 2

3

默认情况下启用连接池。

如果您将“pool_size = 0”添加到连接字符串,这将禁用连接池,我假设行为会强制打开/关闭每个连接。而不是让它们打开。

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

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

于 2012-10-26T20:08:45.147 回答
0

尝试启用连接池:http ://web2py.com/books/default/chapter/29/06#Connection-pooling

于 2012-10-09T21:52:55.457 回答