我试图在同一个redis数据库中保留多个具有不同任务和工作人员的芹菜队列。真的只是一个方便的问题,我的机器上只需要一个 redis 服务器而不是两个。
我逐字遵循 celery 教程文档,因为它是让它为我工作的唯一方法。现在,当我尝试使用稍微调整的名称/队列来复制所有内容时,它会不断出错。
注意 - 我是 Python 和 Celery 的新手,这显然是问题的一部分。我不确定哪些部分被命名为“任务/任务”作为名称与特殊词。
我的精简版文档:Run celery -A tasks worker
to spawn the workers。tasks.py 包含任务代码,celery = Celery('tasks', broker='redis://localhost')
用于连接到 Celery 以及@task()
我想要延迟的函数之上。
在我的排队任务程序中......
from tasks import do_work
do_work.delay()
因此,鉴于上述所有情况,我需要采取哪些步骤才能将其转变为在不同队列和工作人员上独立运行的两种类型的任务?例如,blue_tasks 和 red_tasks?
我尝试将所有任务实例更改为 blue_tasks 或 red_tasks。但是,当我排队 blue_tasks 时,我启动的 red_tasks 工作人员开始尝试处理它们。
我阅读了有关默认队列等的信息,所以我尝试了这段代码,但没有成功:
CELERY_DEFAULT_QUEUE = 'red'
CELERY_QUEUES = (
Queue('red', Exchange('red'), routing_key='red'),
)
作为旁注,我不明白为什么celery worker
celery 尝试连接到默认 amqp 实例时出错,同时celery -A tasks worker
告诉 celery 连接到 Redis。celery worker
如果未指定任何内容,则尝试在工作人员上运行什么任务代码?