メッセージブローカーとしてRabbitMQを使用して、DjangoアプリでCeleryを実行しています。しかし、RabbitMQ はこのように壊れ続けています。まず、Django からのエラーです。後でわかるように、エラーの原因がわかっているため、トレースはほとんど重要ではありません。
Traceback (most recent call last):
...
File "/usr/local/lib/python2.6/dist-packages/amqplib/client_0_8/transport.py", line 85, in __init__
raise socket.error, msg
error: [Errno 111] Connection refused
これは、 rabbit_persister.logファイルの破損が原因であることはわかっています。これは、RabbitMQ に関連付けられているすべてのプロセスを強制終了した後、「sudo rabbitmq-server start」を実行して次のクラッシュが発生するためです。
...
starting queue recovery ...done
starting persister ...BOOT ERROR: FAILED
Reason: {{badmatch,{error,{{{badmatch,eof},
[{rabbit_persister,internal_load_snapshot,2},
{rabbit_persister,init,1},
{gen_server,init_it,6},
{proc_lib,init_p_do_apply,3}]},
{child,undefined,rabbit_persister,
{rabbit_persister,start_link,[]},
transient,100,worker,
[rabbit_persister]}}}},
[{rabbit_sup,start_child,2},
{rabbit,'-run_boot_step/1-lc$^1/1-1-',1},
{rabbit,run_boot_step,1},
{rabbit,'-start/2-lc$^0/1-0-',1},
{rabbit,start,2},
{application_master,start_it_old,4}]}
Erlang has closed
私の現在の修正:これが発生するたびに、対応する rabbit_persister.log ファイルの名前を別のもの (rabbit_persister.log.bak) に変更し、RabbitMQ を正常に再起動できます。しかし、問題は発生し続けており、その理由はわかりません。何か案は?
また、免責事項として、私は Erlang の経験がありません。Celery が好むブローカーであるため、RabbitMQ のみを使用しています。
前もって感謝します。同じ修正を何度も繰り返しているため、この問題は本当に厄介です。