2012-12-10 284 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命令