2017-08-28 39 views
1

私はマルチスレッドを行うためにpythonスレッドモジュールを使用しているdjangoアプリケーションを持っています。 しかし、私がApache-mod_wsgiにデプロイすると、動作していない.joinが失敗し、スレッドが機能しません。誰も正確なApacheの設定を助けることができますか?python django wsgi multithread - djangoでマルチスレッドを使用する方法

私は以下のようにいくつかのマルチスレッドとマルチプロセスの設定を保ちました。しかし、まだ動作していません。 私の設定 - は、Webアプリケーション・プロセスでバックグラウンドタスクを実行すると、多くの場合、悪い考えですが、スレッドを使用してからあなたを停止しmod_wsgiを中には何もありませんが、8000

Alias /static/ /usr/td/static/ 
<Directory /usr/td/static/> 
    Require all granted 
</Directory> 

<Directory /usr/td> 
    <Files wsgi.py> 
    Require all granted 
    </Files> 
</Directory> 
    WSGIDaemonProcess td display-name=myproject processes=10 threads=255 python-path=/usr/td/:/usr/lib/python2.7/site-packages 
    WSGIProcessGroup td 
WSGIScriptAlias//usr/td/td/wsgi.py 

答えて

0

を聞きます。あなたがやっていることに応じて、Celeryのような別々のタスクキューイングシステムを使うべきです。

あなたが間違った方向に向いていることを示すものとして目立つのは、threads=255です。これは、要求を受け入れるための並行スレッドの数です。このような高い数値を設定することは、ほとんど常に悪い考えです。

今のところ、2550スレッドのすべてのmod_wsgiデーモンプロセスで要求スレッドプールサイズを設定しました。これは、Apache自身がプロキシできる以上の方法です。それは決して使用されないような記憶の無駄です。

スレッディングモデルやGILが実用的になっていないため、プロセスが高いCPUタスクを実行している場合は、25スレッドも高いと見なされます。

なぜ、このように高いスレッド数を使用していますか?この数字は、自分が作成するバックグラウンドスレッドとは関係なく、Webリクエストハンドラスレッドの数だけを示しています。

実行しようとしている実際のスレッドコードについて実際にお役立てください。 Apache/mod_wsgiの設定は実際にはそれと関係がありません。

+0

回答ありがとうございました。私はここでwsgi - apache設定でスレッドを保持する必要はありません。私はこの設定を維持するが、Pythonでのスレッドを許可します..私はちょうどバックエンドでスレッドを実行したい。セロリもバックエンドで私を助けますか?あなたはいくつかのリンクを共有していただけますか?私はセロリのドキュメントに行ってきましたが、それは私に合っているように見えました。私はバックエンドでいくつかの並列作業を行うためにスレッドモジュールを使用しています。 – user8525895

関連する問題