你应该在哪里更新芹菜设置?在远程工作者或发件人?
Where should you update Celery settings? On the remote worker or sender?
你应该在哪里更新芹菜设置?在远程工作人员或发件人上?
例如,我有一个使用 Django 和 Celery 的 API。 API 通过代理 (RabbitMQ) 将远程作业发送给我的远程工作人员。工作人员是 运行 一个 python 脚本(不使用 Django),有时这些工作会产生子任务。
我已经在双方(发件人和工作人员)上创建了 celery 设置,即他们都需要设置 BROKER_URL
。但是,假设我要添加设置 CELERY_ACKS_LATE = True
, 我应该将此设置添加到哪一端? 每个远程工作人员或发件人 (API)?
API 和远程工作者都连接到同一个 Broker,每个启动 celery 的方式不同。 API 通过 Django __init__.py
创建一个 celery 实例,工作人员通过主管启动 celery 即 celery -A tasks worker -l info
CELERY_ACKS_LATE = True
属于工人。它描述了工作人员是否应该在消费后(完成前)或完成后(延迟)立即标记任务 'acknowledged'。两种方法 have their drawbacks 我想你知道自己在做什么。
当然最好双方都有一个配置文件并使用它。例如,拥有整个项目的通用代码库,并在 VCS 中更新文件并部署后 - 重新启动各方。
但在这种情况下,使用此特定标志,您只能重新启动工作程序。
django celery 设置仅影响 django 服务器本身的工作人员 运行。
如果您的所有工作人员都是远程工作人员(就像我这样做的方式),那么在发送方,您需要的只是将提交任务所需的配置放入任务队列。
所有其他设置都需要在远程工作人员上进行设置。
对于任务,在发送方,我需要做的就是像这样定义任务签名:
@app.task(name='report_task')
def reportTask(self, link):
pass
然后在worker端,你需要新建一个同名的Celery应用,指向同一个broker;对于其他芹菜设置,您需要在远程工作人员上声明它们。
并在远程工作人员上实现任务逻辑(只要他们具有相同的任务名称和函数参数,您就可以为每个工作人员设置不同的任务逻辑)
你应该在哪里更新芹菜设置?在远程工作人员或发件人上?
例如,我有一个使用 Django 和 Celery 的 API。 API 通过代理 (RabbitMQ) 将远程作业发送给我的远程工作人员。工作人员是 运行 一个 python 脚本(不使用 Django),有时这些工作会产生子任务。
我已经在双方(发件人和工作人员)上创建了 celery 设置,即他们都需要设置 BROKER_URL
。但是,假设我要添加设置 CELERY_ACKS_LATE = True
, 我应该将此设置添加到哪一端? 每个远程工作人员或发件人 (API)?
API 和远程工作者都连接到同一个 Broker,每个启动 celery 的方式不同。 API 通过 Django __init__.py
创建一个 celery 实例,工作人员通过主管启动 celery 即 celery -A tasks worker -l info
CELERY_ACKS_LATE = True
属于工人。它描述了工作人员是否应该在消费后(完成前)或完成后(延迟)立即标记任务 'acknowledged'。两种方法 have their drawbacks 我想你知道自己在做什么。
当然最好双方都有一个配置文件并使用它。例如,拥有整个项目的通用代码库,并在 VCS 中更新文件并部署后 - 重新启动各方。
但在这种情况下,使用此特定标志,您只能重新启动工作程序。
django celery 设置仅影响 django 服务器本身的工作人员 运行。
如果您的所有工作人员都是远程工作人员(就像我这样做的方式),那么在发送方,您需要的只是将提交任务所需的配置放入任务队列。
所有其他设置都需要在远程工作人员上进行设置。
对于任务,在发送方,我需要做的就是像这样定义任务签名:
@app.task(name='report_task')
def reportTask(self, link):
pass
然后在worker端,你需要新建一个同名的Celery应用,指向同一个broker;对于其他芹菜设置,您需要在远程工作人员上声明它们。
并在远程工作人员上实现任务逻辑(只要他们具有相同的任务名称和函数参数,您就可以为每个工作人员设置不同的任务逻辑)