31

SQLAlchemy を介したデータベース呼び出しはブロックされ、同期コード以外での使用には適していないという印象を受けました。私は正しいですか(そうでないことを願っています!)、またはブロックしないように構成する方法はありますか?

4

3 に答える 3

29

gevent を使用して、ノンブロッキング スタイルでSQLAを使用できます。psycopg2 のコルーチン サポートを使用して、psycopg2 を使用する例を次に示します。

https://bitbucket.org/zzzeek/green_sqla/

また、人々がpymysqlで同じアイデアを使用していると聞きました。pymysql は純粋な Python であり、ソケット ライブラリを使用するため、gevent はソケット ライブラリにパッチを適用して非同期にします。

于 2012-04-18T19:00:02.150 に答える
6

Tornadoにはきちんとしたノンブロッキング ライブラリ (特に tornado.gen) がいくつかあります。

これを、Tornado のノンブロッキング psycopg ラッパー ライブラリであるMomokoと一緒に使用します。これまでのところ素晴らしいです。おそらく唯一の欠点は、SQLAlchemy が提供するすべてのモデル オブジェクトを失うことです。しかし、パフォーマンスは非現実的です。

于 2012-04-18T17:27:47.247 に答える