2017-10-10 11 views
0

私はmod_wsgiデーモンプロセスを使ってテスト用のDjangoサイトを持っており、連絡フォームを電子メールで送り、スーパーバイザーをインストールする簡単なセラータスクを設定しました。スーパーバイザでUbuntuでCeleryタスクを実行しています

私はDjangoコードが正しいことを知っています。

問題は、私がフォームを送信すると、最初のメッセージが1つしかないということです。連絡フォームのその後の完了は、全くメッセージを送信しません。

私のサーバには、Djangoサーバを使用する(つまりmod_wsgiを使用していない)スーパーバイザタスクを実行している別のテストサイトがあります。私はここで

sudo supervisorctl status 

をすれば、私の仕事の両方が細かい実行されて、私はその上に説明しましたタスクのための私のconfファイルは、この例では、ユーザがMYUSERと呼ばれる

/etc/supervisor/conf.d 

に保存されている

[program:test_project] 
command=/home/myuser/virtualenvs/test_project_env/bin/celery -A test_project worker --loglevel=INFO --concurrency=10 -n [email protected]%%h 
directory=/home/myuser/djangoprojects/test_project 
user=myuser 
numprocs=1 
stdout_logfile=/var/log/celery/test_project.out.log 
stderr_logfile=/var/log/celery/test_project.err.log 
autostart=true 
autorestart=true 
startsecs=10 

; Need to wait for currently executing tasks to finish at shutdown. 
; Increase this if you have very long running tasks. 
stopwaitsecs = 600 

stopasgroup=true 

; Set Celery priority higher than default (999) 
; so, if rabbitmq is supervised, it will start first. 
priority=1000 

私の他のテストサイトでは、コマンドとしてこのセットを持っている - worker1 @ %%時間

command=/home/myuser/virtualenvs/another_test_project_env/bin/celery -A another_test_project worker --loglevel=INFO --concurrency=10 -n [email protected]%%h 
の点に注意してください。

私のフォームが送信されただけで何か間違っているのは明らかです。上記のout.logファイルを見ると、私は最初のタスクしか見ることができず、他のフォームの投稿には何も表示されません。

事前に感謝します。

UPDATE

上述したように、私は、タスクが作成されなかった直後に別のものを受信された8.32 AM(GMT)で第1のフォームを提出し、そして。質問を終えた直後に、私は9.15にフォームを再度提出しました。このためにタスクが作成され、メッセージが受信されました!私は再びフォームを提出しましたが、タスクは再度作成されませんでした。お役に立てれば!

答えて

0

ps auxf|grep celeryあなたが始めたワーカーの数を確認するには、前に開始した他のワーカーがいて、それを殺さないと、前に作成したワーカーがタスクを消費します。より多くの)回だけが受信されます。

、あなたはでセロリを停止する必要があります。それ以外の場合は、メモリリークや定期的なタスクの損失が発生します

stopasgroup=true    ; send stop signal to the UNIX process group (default false) 

を:

sudo supervisorctl -c /etc/supervisord/supervisord.conf stop all 

毎回、及びsupervisord.confでこれを設定します。あなたはバーチャルホストへのRabbitMQのバーチャルホストと設定されたユーザーを追加する必要があります :あなたはマルチDjangoのサイトを持っている場合


、ここでのRabbitMQによってデモのサポートがある別のバーチャルホストを使用

sudo rabbitmqctl add_vhost {vhost_name} 
sudo rabbitmqctl set_permissions -p {vhost_name} {username} ".*" ".*" ".*" 

と異なるサイト(ことができますが、同じユーザーを使用してください)。 これをあなたのdjango設定に追加してください。PY:

BROKER_URL = 'amqp://username:[email protected]:5672/vhost_name' 

ここにいくつかの情報:

Using celeryd as a daemon with multiple django apps?

Running multiple Django Celery websites on same server

Run Multiple Django Apps With Celery On One Server With Rabbitmq VHosts

Run Multiple Django Apps With Celery On One Server With Rabbitmq VHosts

+0

こんにちは、私に戻ってくれてありがとう。私は既にスーパーバイザーのconfファイルにstopasagroup = trueを持っています。 RabbitMQに対するあなたのコメントに関しては、vhostsを使ってunbuntuを実行していないので、これを行う必要がありますか? (私はPleskを使用していません - これについて私の無知を許してください)。その間、私は提供されたリンクを見ていきます - 多くの感謝 – Newfoundland

+0

こんにちは、私はあなたが与えた指示に従って、働いている - 多くのありがとう - 非常に感謝 – Newfoundland

+0

私の喜び.... – Ykh

関連する問題