1

因此,我将这 2 个应用程序与 REST API(json 消息)连接起来。一个用 Django 编写,另一个用 Php 编写。我在两边都有一个精确的数据库副本(使用 mysql)。

当我在其中一个上按“提交”时,我希望将该数据保存在当前的应用程序数据库中,并使用 celery/redis 启动一个 cron 作业,以使用 rest 更新另一个应用程序的远程数据库。

我的问题是,我如何将同一个工人分配给我的任务以保持先进先出顺序?

我需要我的数据保持一致,FIFO 非常重要。

好的,我将详细说明我想进一步做的事情:

所以我有这个 django 应用程序,当我在填写表格后按下提交时,我的芹菜工人醒来并负责处理提交的数据并将其发布到远程服务器。我可以毫无问题地做到这一点。

现在,想象一下我的互联网在那个确切的时间出现故障,我的 celery 工作人员不断重试发送,直到它成功但是想象我在提交之前的数据之前再次提交,我的数据在另一个远程服务器上不会是一致的。

现在这是我的问题。我无法使用 celery 提供的重试选项使这个请求成为 FIFO,所以我需要一些帮助来解决这个问题。

4

1 回答 1

1

这是我从另一个论坛得到的答案:

在 celery 中使用命名队列: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

对于先进先出部分,我可以在发送请求之前按先进先出顺序对我的芹菜经纪人进行排序

于 2012-12-11T14:41:05.990 回答