将不同的任务分配给不同的芹菜工人



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

celery worker -Q q1,q2 -c 2

这表明我的服务器将处理队列q1q2上的所有任务,并且我有 2 个工作线程正在运行。我的服务器应该支持 2 个不同的任务:

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

如果我将test1任务发送到队列q1test2发送到q2,则两个工作线程都将运行这两个任务。所以结果将是:

test1
test2
test1
test2
...

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

celery worker -Q q1 -c 1
celery worker -Q q2 -c 1

每个处理 1 个队列。但我想让它们更干净并使用-c 2.我找到了芹菜路由,但不确定这是否是我想要的。

我找到了答案,我把它放在这里,以防其他人也想这样做:

除了使用 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

这表示我们有 2 个队列:-Q:1 q1 表示队列 #1,名称为 q1q2 相同,每个队列都有不同的并发性,-c:1 1 表示第一个芹菜工作线程的并发性为 1。

相关内容

  • 没有找到相关文章

最新更新