我可以使用Celery发布和订阅主题吗?

时间:2019-11-06 09:56:16

标签: redis rabbitmq celery message-queue task-queue

我所见到的执行/安排Celery任务的所有示例都是这样的:

$Json = Get-Content "$path" | out-string | ConvertFrom-Json
$Name = switch ($Member) {
    $Json.Names[0].Name  {$Json.Names[0].Name; break}
    $Json.Names[1].Name  {$Json.Names[1].Name; break}
    $Json.Names[2].Name  {$Json.Names[2].Name; break}
    $Json.Names[3].Name  {$Json.Names[3].Name; break}
    $Json.Names[4].Name  {$Json.Names[4].Name; break}
    $Json.Names[5].Name  {$Json.Names[5].Name; break}
    $Json.Names[6].Name  {$Json.Names[6].Name; break}
    default {"Unknown Name"}
}

我想知道我是否可以用芹菜做这样的事情:

add.delay()

在其他代码库/服务中:

celery_app.publish(topic='my-topic')

这样,我不需要知道事件发生时哪些任务必须执行某些操作。

我可能有一些误解导致了这个问题,但我自己找不到答案。

1 个答案:

答案 0 :(得分:0)

没有主题,只是排队。是的,您可以将任务发送到任何队列。订阅队列是工人级别的远程命令,因此也是可能的。

此外,您不能将任意消息发送到队列,而只能发送Celery任务。如果要产生/使用任意消息,请使用kombu。