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

标签 python celery

假设我有三台服务器 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文件,因为它正在导入 task来自 tasks.py文件。如果我们要在不同的服务器上运行这两个文件,我们需要将它们解耦并以某种方式调用任务,而无需导入代码。我无法弄清楚如何实现这一目标。那么,如何做到呢?

最佳答案

一般来说,你不会这样做。您将相同的代码(包含任务)部署到生产者(客户端)和消费者(工作人员)。但是,Celery 是一款很酷的软件,它允许您实际安排任务,而无需在生产者端分发代码。为此,您必须使用 send_task()方法。您必须为生产者配置与您的工作人员相同的参数(自然是相同的代理,相同的序列化),并且您必须知道调用任务名称及其参数才能正确安排其执行。

关于python - 如何使用 Python Celery 在不同的服务器上执行任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61361676/

相关文章:

python - 如何让 mac 用户的 redis 服务器在 virtualenv 下工作?

python - Django `bulk_create` 及相关对象

python - 查找标题包含文本的 anchor

python - 在 python Elasticsearch 中滚动不起作用

python - 使用 findAll 检索没有类和 id 的日期

python - 如何使用带有 gevent 的 redis 或 Python 中的线程来为多个任务构建我的应用程序

python - 用户 rabbitmq 和 celery 的访问被拒绝

python +安全

python - 主管 - 如何运行多个命令

python - Celery 在使用不正确的 broker url 发布任务时挂起