2017-09-13 17 views
0

私はdjango、セロリとrabbitmqに問題があります。Djangoセロリとrabbitmqは再起動するまで動作しません

セロリを使用してFCMデバイスにメッセージを送信しますが、セルラーサーバーを再起動するまでセロリがそのFCMコマンドを実行してメッセージを送信しないという問題があります。

セロリを再起動しても同じことをやり直すと、すべてのアクションをやり直してから再起動する必要があります。

例コード:

from __future__ import absolute_import, unicode_literals 

from celery import shared_task 
# firebase cloud messaging 
from fcm.utils import get_device_model 
Device = get_device_model() 


@shared_task 
def send_firebase_message(json, **kwargs): 
    response = Device.send_msg(json, **kwargs) 
    return response 

これは単純なコードですので、私はセロリサーバを再起動するまで、このDevice.send_msgは発生しません。 セロリは、再起動するまでこの作業を行いません。多分それはrabbitmq問題ですか?

誰もがこれに対応していますか?何が問題なの?

+0

毎回使用後にセロリをきれいにする必要があるように思えます。 *** $セロリのパージ*** –

+0

しかし、私はすべてのアクションのためにそれを行う必要がある場合は悪いですか? –

+0

すべてのプロジェクトでガベージコレクションを呼びます。特に私がコンポーネントを使用するとき。それ以外の場合は、RAMにスタックされたり、メモリリークを引き起こしたり、場合によってはプロセスをブロックしたりします。それが問題ではない場合でも、その良い練習 –

答えて

0
3.1以降に動作していない--autoreloadは、neededl

あなたはこの記事を参照してください、私たちは別のオプションは、この操作を行う必要があり、DOC deprecated

を参照してください。もっと知ってほしい場合はauto reload .ITをinotifyを非ブロックに変更

私の現在のプロジェクトのために働いているようです

+0

しかし、私は問題がありません自動再ロード、セロリはサーバーを再起動するまで動作しません。コードを変更せず、セカリにタスクを追加するだけで、再起動するまでは起動しません。 –

+0

それは発砲しなければならない。我々はすでにそれをしている – Robert

関連する問題