2011-06-20 6 views
3

--pool = eventletオプションを使用してセロリ・ワーカーを実行すると、amqplib.client_0_8.method_framing.read_methodから「IOError:Socket closed」例外が多数発生します。また、eventlet.hubs.hub.switchから多くのタイムアウト例外が発生しています。セロリ・イベント・レター・タスクによるソケット・エラーの多く

./async_manage.py celeryd_detach -E --pool=eventlet --concurrency=120 --logfile=<path> 

これは既知の問題であり、あるいは私の構成や設定に問題がある:

私のような作品を実行し、https://gist.github.com/821848 1つに類似async_manage.pyスクリプトを使用していますか?

私はdjcelery 2.2.4、Django 1.3、およびeventlet 0.9.15を実行しています。

+1

を、あなたのタスクは、通話をブロックしません確信していますか? – asksol

+0

私は毎日猿のパッチを当てていますが、何もブロックしていないことは100%確信していません。見つけ出す最良の方法は何ですか?それがあれば何ができますか? –

+0

サルのパッチ適用では、どのようにパッチを当てるのかを知っているイベントレットだけがパッチを当てます。そのため、まだカバーされていないライブラリを使用することができます。ここで例を見てください:http://unethicalblogger.com/2010/08/28/unclog-the-tubes-blocking-detection-in-eventlet.html – asksol

答えて

5

問題はブロックしていたコードの副作用でした。 http://unethicalblogger.com/2010/08/28/unclog-the-tubes-blocking-detection-in-eventlet.html

ブロッキングが発生した場所は2つありました:DNSルックアップとMySQLデータベースアクセスです。私はeventletで文書化されていないのMySQLdbオプション使用して、私のdnspythonパッケージをインストールして最初に、第二を解決するために管理:

import eventlet 
eventlet.monkey_patch() 
eventlet.monkey_patch(MySQLdb=True) 
関連する問題