2017-09-13 117 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

聽起來像你需要在每次使用後清洗芹菜。嘗試這樣的事情:*** $ celery purge *** –

+0

但是,如果我需要爲每個操作都做到這一點,那很糟糕? –

+0

懷疑它。我在我的所有項目中都會調用垃圾回收。特別是當我使用組件時。否則,事情就會陷入內存中,造成內存泄漏,或者像你的情況一樣,阻塞進程。即使它不是問題,它是一個良好的做法 –

回答

0

因爲3.1不工作的--autoreload,更改爲無阻塞的inotify neededl

,如果你想了解更多請參考該文檔deprecated

我們有另一種選擇這樣做,請參閱這篇文章auto reload。它似乎適用於我目前的項目

+0

但我沒有問題autoreload,芹菜不工作,直到我重新啓動服務器,我不更改代碼,只需將任務添加到芹菜,它不會觸發,直到重新啓動。 –

+0

它必須被解僱..我們已經做到了 – Robert