10

何千ものTCP/UDPリクエストを行うDjango管理コマンドがあります。コルーチンとして機能するようにコードを再構築したので、Geventを使用してこれを高速化しました。ソケット接続はブロックされなくなりましたが、私が読んだところによると、Djangoの一部はまだ緑色ではありません。(グリーンとは、グリーンレットを使用することを意味します。)

Djangoのどの部分が緑ではないのか、そしてそれらを緑にするために私ができることを教えてください。まだブロックしているDB関連の部分がいくつかあると思います。Djangoを環境に優しいものにするのに役立つライブラリ/パッチはありますか?

リクエスト/レスポンスのサイクルが緑色であるかどうかについてあまり心配していません。したがって、Gunicornは私を助けてくれますか?

ありがとう

4

2 に答える 2

10

geventモンキーパッチャーは、Greenletに対応するように標準ライブラリにパッチを適用します。これは、多くの一般的なDjango呼び出しを処理する必要があります。

from gevent import monkey; monkey.patch_all()

データベースに関しては、通常、インターフェースはブロックされています。PostgreSQLを使用する場合は、psyco_geventを調べてpsycopg2にモンキーパッチを適用し、geventと連携します。

于 2012-02-16T11:50:34.847 に答える
2

geventは、C拡張機能を使用しているか、C拡張機能を使用している他のサードパーティライブラリを使用している限り、サードパーティライブラリをグリーン化しません。標準ライブラリが使用されている場合、geventはそれらにモンキーパッチを適用できます。

もちろん、一部のデータベースドライバーは、データベースの実装自体に依存しています。緑化されたライブラリを使用しているからといって、データベースが「緑」で動作するわけではありません。これは、データベースレベル自体でも呼び出す必要があります。たとえば、Prosgresqlは、バージョン2.2以降の非同期コマンド処理をサポートしています。

また、geventを使用してプロジェクトを確認することもできます。

Gunicornは、少なくともアプリケーションのデプロイを開始するときに、作業を楽にします。また、開発中は、通常のdjango runserverコマンドよりもgunicorn(geventを使用)をお勧めします。これは、同時リクエストをはるかに高速に処理できるためです。

于 2012-03-01T09:24:35.037 に答える