2012-12-10 283 views
-1

所以我有這2個應用程序連接一個REST API(json消息)。一個用Django寫,另一個用Php。我有一個確切的數據庫副本雙方(使用MySQL)。Django芹菜FIFO

當我在其中一個按下「提交」時,我想要將這些數據保存在當前應用程序數據庫中,然後使用celery/redis啓動cron作業,以使用其他應用程序更新遠程數據庫。

我的問題是,我如何將同一個工人歸因於我的任務,以保持先進先出順序?

我需要我的數據保持一致,FIFO非常重要。

好了我要去的細節是什麼,我想再做一點:

所以我有這個Django應用程序,當我按下後,我填寫表格提交我的芹菜工人醒來並需要照顧將提交的數據提交給遠程服務器。這我可以沒有問題。

現在,想象一下,我的網絡在那個時候停滯不前,我的芹菜工作人員一直試圖發送,直到它成功但是想象我在提交之前的數據之前做了另一次提交,我的數據在另一個遠程服務器。

現在,這是我的問題。我無法使用芹菜給出的重試選項來提出請求FIFO,所以我就是這樣,我需要一些幫助來解決這個問題。

+1

難道他們只是共享數據庫/使用mysql複製嗎? –

+0

您只需使用一個工作進程即可實現FIFO式執行。 – ThiefMaster

+0

我如何強制它只使用1個工作進程? – psychok7

回答

0

這是我從另一個論壇得到了答案:

使用命名的隊列芹菜: http://docs.celeryproject.org/en/latest/userguide/workers.html#queues

開始與一個工人工作進程: http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html#starting-the-worker-process

設置這個工人消費從適當的隊列: http://docs.celeryproject.org/en/latest/userguide/workers.html#queues-adding-consumers

對於fifo部分我可以排序m y芹菜經紀人在發送我的請求之前以fifo命令