1

WSGI python Web アプリで SQLAlchemy を使用して、データベースにクエリを実行しています。2 つの同時要求を行うと、2 番目の要求は常に例外をスローし、SQL Server は次のように述べています。

[24000] [FreeTDS][SQL Server]Invalid cursor state (0) (SQLExecDirectW)

残念ながら、キャッシュを使用してデータベースへの追加のリクエストを防ぐことはできないようです。この問題を解決する別の方法はありますか? 理想的には、ネイティブの python ライブラリを使用しますか (つまり、別の python モジュールに依存しないでください)?

私が考えることができる唯一のことは、スレッドを使用してデータベースクエリを作成する関数をロックすることですが、これがアプリの速度を低下させるのではないかと心配しています.

他にできることはありますか?これは構成の問題ですか?

Centos 5.9 サーバーで FreeTDS v0.91 を使用し、MS SQL Server 2008 に接続しています。

webapp は Paste に基づいています。

4

1 に答える 1

1

2 つの同時要求が異なるデータベース接続を使用していますか? 通常、DBAPI 接続はスレッドセーフではありません。ORM レベルでは、リクエストごとにセッションを使用していることを確認して、各リクエストが独自のセッションを持ち、したがって専用の DBAPI 接続を持つようにします。

于 2013-08-12T15:42:21.870 に答える