1

dotcloud に移行したい django アプリがあります。Django 内部と私のアプリの多くのアクションは非同期ではありません。つまり、完了するまでスレッドをブロックします。私が Apache を使用していたときは、リクエストごとに別のスレッドが開かれるため、問題はありませんでした。しかし、dotcloud が使用する nginx/uwsgi ではそうではないようです。uwsgi には、マルチスレッドに使用できる --enable-threads および --threads オプションがありますが、次のようになります。

  1. uwsgi dotcloud のどのバージョンが使用されているか、またそれらがこれらの機能をサポートしているかどうかは明らかではありません
  2. 私はこれについて他に尋ねていないので、これが本当に並行リクエストを実行する正しい方法であるかどうか疑問に思っていました(スレッドを使用して)
4

3 に答える 3

1

Gunicornで Django を実行できます。一方、Gunicorn は複数のワーカー クラスをサポートしており、gunicorn+gevents+django を一緒に実行すると成功したと報告されています[1] [2]

それを dotCloud で使用するには、おそらく dotCloud のカスタム サービスを使用する必要があります。それがあなたが試してみたいことなら、私は個人的にカスタム サービスを使用して dotCloud の python サービスの再実装から始め、その中のuwsgi を gunicorn に置き換えます。

于 2012-08-09T07:40:56.000 に答える
1

私は見つけたいくつかのリードを探してここに来ました、ありがとう! ただし、実際に機能させるには、かなりの量の脚の仕事が残っていました。

dotcloud で gunicorn、gevent、および socketio を使用する github のサンプル アプリを次に示します。

https://github.com/t1m0thy/django-tictactoe/tree/dotcloud

于 2013-02-13T21:07:22.087 に答える
-1

スレッドは Python の問題です。GIL ではスレッドを同時に実行することはできません。したがって、マルチプロセッシングが答えです。

または、gevent を参照してください。実際には、gevent は一種のハック (Python スタックのモンキー パッチ) などですが、グリーン スレッドを起動できます。gevent を django と組み合わせることができるかどうかはわかりませんが、Google は知っています ;)

于 2012-08-07T17:40:58.470 に答える