假设我有三个服务器A、B和amp;C.服务器C将有芹菜任务代码,我需要从服务器A&B.
从芹菜文档中,我看到有一个task.py
文件,它作为芹菜工作运行
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
。如果我们要在单独的服务器中运行这两个文件,我们需要将它们解耦,并以某种方式调用任务,而不必导入代码。我不知道如何做到这一点。那么,怎样才能做到呢?
一般情况下,您不会这样做。您将相同的代码(包含任务(部署到生产者(客户端(和使用者(工作者(。然而,Celery是一款很酷的软件,它允许您在不需要在生产商端分发代码的情况下实际安排任务。为此,必须使用send_task((方法。您必须使用与工人相同的参数来配置生产者(自然是相同的代理,相同的序列化(,并且您必须知道调用任务的名称及其参数,以便正确地安排其执行。