0
我對PHP使用的是芹菜https://github.com/gjedeer/celery-php。可靠性對於我們的項目很重要。所以我想確保所有計劃的任務都會執行甚至Rabbitmq崩潰。所以我安排了一項任務,然後我停止了Rabbitmq並重新開始。當預定的時間到了,任務不執行。 這是我的任務。acks_late在Rabbitmq崩潰後未恢復計劃的任務
from celery import Celery
import subprocess
app = Celery('tasks', backend='amqp', broker='amqp://')
@app.task(acks_late=True)
def hipoCheckSubscriptions(args):
return subprocess.call(['php54','/path/to/script', '--args='+args])
請幫助,我做錯了什麼?有沒有我的情況下的食譜。
檢查Celery創建的隊列是否持久/持久。如果沒有,請查找適當的Celery設置。請參閱Celery-PHP構造函數中的$ persistent_messages。此外,請檢查:https://stackoverflow.com/questions/5046944/why-is-rabbitmq-not-persistent-messages-on-a-durable-queue – GDR 2014-11-24 11:06:46
@gdr是的,你是正確的** celery-php * * ** $ persistent_messages **選項。但我用我的網絡應用程序Yii extenstion叫** celery-yii **。他們在設置中錯過了這個選項,或者我找不到它。所以我重寫** celery-yii **使消息持久。我的解決方案在下面。 – 2014-11-26 04:07:00
有道理。如果您正在積極使用celery-yii,請考慮爲該項目貢獻一些工作 - 他們與celery-php分開,並且看起來他們在功能上有點落後。 – GDR 2014-11-26 15:41:42