为不同的芹菜工人分配不同的任务

Ali*_*iBZ 10 python celery

我正在使用此命令运行我的服务器:

celery worker -Q q1,q2 -c 2
Run Code Online (Sandbox Code Playgroud)

这表明我的服务器将处理上队列中的所有任务q1,并q2和我有2名工人正在运行.我的服务器应支持2个不同的任务:

@celery.task(name='test1')
def test1():
    print "test1"
    time.sleep(3)

@celery.task(name='test2')
def test2():
    print "test2"
Run Code Online (Sandbox Code Playgroud)

如果我把我的test1任务排队q1,并test2q2,工人都将运行两个任务.结果将是:

test1
test2
test1
test2
...
Run Code Online (Sandbox Code Playgroud)

现在我需要的是我的一个工人处理test1,另一个处理test2.一个解决方案是运行两个像这样的芹菜工人:

celery worker -Q q1 -c 1
celery worker -Q q2 -c 1
Run Code Online (Sandbox Code Playgroud)

每个人处理1个队列.但我想让它们更清洁和使用-c 2.我找到了芹菜路由,但我不确定这是不是我想要的.

Ali*_*iBZ 12

我找到了答案,我把它放在这里以防其他人想要做同样的事情:

而不是使用的celery worker -Q q1,q2 -c 2,celery multi可以使用:

celery multi start 2 -Q:1 q1 -Q:2 q2 -c:1 1 -c:2 1
Run Code Online (Sandbox Code Playgroud)

这表示我们有2个队列:-Q:1 q1意味着队列#1的名称q1和相同,q2并且每个队列都有不同的并发,这-c:1 1意味着第一个芹菜工人的并发度为1.