我有两个不同配置的Celery应用程序实例,比如说app1和app2 . app1中的任务在远程worker1上执行 . app2中的任务在远程worker2上执行 .
我试图用app2中的子任务从app1执行一个任务但是子任务没有被执行 .
我的代码是这样的:
import app1.tasks as app1_tasks
import app2.tasks as app2_tasks
reference = 'foo'
success_callback = app2_tasks.bar.subtask(reference)
app1_tasks.foo.apply_async(
args=(
1, 2, 3, reference,
),
link= success_callback,
)
有没有办法使这项工作?我需要有两个不同的Celery应用程序 .
回调任务未运行 . 我想这是因为它使用的是不同的应用实例?
重要提示:两个任务都是在不同的工作人员上远程执行的!这就是我有两个应用程序实例的原因之一 .
1 回答
您可以将应用分开并让他们通过以下方式沟通:
1.每个 Worker 都在听不同的队列
2.使用某些routing method向特定应用发送消息,来自docs的手动示例: