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() が応答を取得するのに数秒かかり、スレッドが不足することがよくあります。submitData への 6 つ以上の同時要求で web2py をヒットすると、DB エラーではなく、要求がフリーズします。これには、それ以降の web2py リクエストを停止する効果があります。

some_http_post への呼び出しの前に db 接続を閉じ、その後に別の db 接続を開始したいのですが、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 に答える