我试图借助“任务名称”将机器A上的芹菜工人的任务发送到机器B上的芹菜工人。
所有任务都在计算机B上定义,并且只有一个任务在计算机A上。我想将一个task_name传递给计算机A的工作人员,并在计算机B上以相同的task_name执行该任务。
我如何互相交流。
我们在两个工作人员中都保留相同的broker_url还是什么?
我正在使用Redis作为代理URL和结果后端。
答案 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)如果使用单独的芹菜队列,您也可以与一个经纪人一起执行此操作。