我有一个服务器,其中有两个 django 应用程序正在运行 appone, apptwo 对于他们来说,两个芹菜工人是用命令启动的:
celery worker -A appone -B --loglevel=INFO
celery worker -A apptwo -B --loglevel=INFO
两者都指向相同的BROKER_URL = 'redis://localhost:6379'
Redis 使用 db 0 和 1 进行设置
我可以在两个应用程序的日志中看到在这两个应用程序中配置的任务,这会导致警告和错误。
我们可以在 django 设置中进行配置,使芹菜专门工作而不会干扰彼此的任务吗?
您可以将任务路由到不同的队列。使用两种不同的-Q myqueueX
启动 Celery,然后在两个 Django 项目中使用不同的CELERY_DEFAULT_QUEUE
。
根据你的 Celery 配置,你的 Django 设置应该看起来像这样:
CELERY_DEFAULT_QUEUE = 'myqueue1'
您还可以通过以下方式进行更精细的控制:
@celery.task(queue="myqueue3")
def some_task(...):
pass
更多选项在这里:
如何保持多个独立的芹菜队列?