如何将Celery任务从一台计算机发送到另一台计算机?

时间:2018-12-18 16:58:04

标签: python redis celery

我试图借助“任务名称”将机器A上的芹菜工人的任务发送到机器B上的芹菜工人。

所有任务都在计算机B上定义,并且只有一个任务在计算机A上。我想将一个task_name传递给计算机A的工作人员,并在计算机B上以相同的task_name执行该任务。

我如何互相交流。

我们在两个工作人员中都保留相同的broker_url还是什么?

我正在使用Redis作为代理URL和结果后端。

1 个答案:

答案 0 :(得分:1)

(1)可以使用机器A和机器B的单独代理进行此操作。默认情况下,redis通常为您提供16个数据库,编号为0-15。因此,您可以非常轻松地将db 0分配给A的代理使用,并将db 1分配给B的代理使用。然后,将任务从B发送到A,可以使用send_task

from celery import Celery
app = Celery('redis://myredis-server:6379/0')
app.send_task('task_name', kwargs={ 'param1': 'value1' })

(2)如果使用单独的芹菜队列,您也可以与一个经纪人一起执行此操作。