我正试图借助"任务名称"将任务从机器a上的芹菜工人发送到机器B上的芹菜工。
所有任务都在机器B上定义,只有一个任务在机器A上。我想将task_name传递给机器A工作人员,并在机器B中使用相同的task_name执行任务。
我如何相互沟通。
我们在两个工人身上保持相同的broker_url吗?
我使用Redis作为Broker url和结果后端。
(1(您可以使用机器A和机器B的独立代理来实现这一点。默认情况下,redis通常为您提供十六个数据库,编号为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( 如果使用单独的芹菜队列,也可以使用一个代理来完成此操作。