【发布时间】:2020-04-22 09:28:46
【问题描述】:
假设我有三台服务器 A、B 和 C。服务器 C 将有 celery 任务代码,我需要从服务器 A 和 B 执行它们。
从 celery documentation,我看到有一个 task.py 文件作为 celery worker 运行
from celery import Celery
app = Celery('tasks', broker='pyamqp://guest@localhost//')
@app.task
def add(x, y):
return x + y
然后我们有另一个调用这些任务的 python 文件(比如说client.py)。
from tasks import add
add.delay(4, 4)
在这里我可以看到client.py 文件依赖于tasks.py 文件,因为它正在从tasks.py 文件中导入task。如果我们要在不同的服务器上运行这两个文件,我们需要将它们解耦并以某种方式调用任务而无需导入代码。我无法弄清楚如何实现这一目标。那么,如何实现呢?
【问题讨论】: