如何使用Python Celery在不同的服务器上执行任务



假设我有三个服务器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((方法。您必须使用与工人相同的参数来配置生产者(自然是相同的代理,相同的序列化(,并且您必须知道调用任务的名称及其参数,以便正确地安排其执行。

相关内容

  • 没有找到相关文章

最新更新