你应该在哪里更新Celery设置?在远程工作人员或发件人?

Pro*_*eus 14 python django rabbitmq celery

你应该在哪里更新芹菜设置?在远程工作人员或发件人?

例如,我有一个使用Django和Celery的API.API通过代理(RabbitMQ)将远程作业发送给我的远程工作人员.工作者正在运行python脚本(不使用Django),有时这些工作会产生子任务.

我在双方都创建了芹菜设置(发送者和工作者),即他们都需要设置BROKER_URL.但是,假设我要添加设置CELERY_ACKS_LATE = True,最后我将此设置添加到?每个远程工作人员或发件人(API)?

API和远程工作者都连接到同一个Broker,每个都以不同的方式启动芹菜.API通过Django创建芹菜实例__init__.py,工人通过主管启动芹菜,即celery -A tasks worker -l info

Sou*_*ane 6

django celery设置只影响在django服务器上运行的工作程序.

如果你所有的工作人员都是远程工作者(就像我这样做的话),那么在发送者方面,你所需要的只是将必要的配置放到任务队列中.

并且需要在远程工作人员上设置所有其他设置.

对于任务,在发送方,我需要做的就是定义任务签名,如下所示:

@app.task(name='report_task')
def reportTask(self, link):
    pass
Run Code Online (Sandbox Code Playgroud)

然后在工作者方面,您需要创建一个具有相同名称并指向同一代理的新Celery应用程序; 对于其他芹菜设置,您需要在远程工作人员上声明它们.

并在远程工具上实现任务逻辑(只要具有相同的任务名称和函数参数,每个工作者就可以拥有不同的任务逻辑)