Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一个芹菜打,很多工人?_Python_Django_Redis_Celery_Message Queue - Fatal编程技术网

Python 一个芹菜打,很多工人?

Python 一个芹菜打,很多工人?,python,django,redis,celery,message-queue,Python,Django,Redis,Celery,Message Queue,我想运行一个由多个工作人员共享的DatabaseScheduler支持的celerybeat实例。Redis是经纪人。是只有一个工作人员接收计划任务,还是所有工作人员都接收计划任务?谢谢 您应该运行芹菜节拍调度器的单个实例,然后当它计划任务时,它会将消息放入消息代理队列(在您的例子中是Redis)。默认情况下,队列为“芹菜”,但可以根据您的代码/设置为每个任务或每个任务实例进行配置 当您启动一个或多个Worker时,如果需要,您可以告诉每个Worker要侦听哪些队列,但默认情况下,他们只会再次侦

我想运行一个由多个工作人员共享的
DatabaseScheduler
支持的
celerybeat
实例。Redis是经纪人。是只有一个工作人员接收计划任务,还是所有工作人员都接收计划任务?谢谢

您应该运行芹菜节拍调度器的单个实例,然后当它计划任务时,它会将消息放入消息代理队列(在您的例子中是Redis)。默认情况下,队列为“芹菜”,但可以根据您的代码/设置为每个任务或每个任务实例进行配置

当您启动一个或多个Worker时,如果需要,您可以告诉每个Worker要侦听哪些队列,但默认情况下,他们只会再次侦听“芹菜”队列上的消息。当消息被推送到队列时,第一个可用的工作进程将收到来自代理的推送通知并执行它。代理将确保一次只将单个任务实例推送到一个工作者


默认情况下,如果该工作者在执行任务时崩溃,那么它将丢失。您还可以使用该设置更改该行为,这意味着如果某个工作进程崩溃,其当前任务将被重新分配给下一个可用的工作进程。

同样值得添加的是,可以使用
@app.task(ACKS\u LATE=True)