Как выполнять задачи на другом сервере, используя Python Celery? - PullRequest
0 голосов
/ 22 апреля 2020

Допустим, у меня есть три сервера A, B & 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, так как он импортирует task из файла tasks.py. Если мы хотим запустить эти два файла на отдельных серверах, нам нужно отделить их и как-то вызвать задачи, не импортируя код. Я не могу понять, как этого добиться. Итак, как это можно сделать?

1 Ответ

1 голос
/ 22 апреля 2020

В общем, вы этого не делаете. Вы развертываете один и тот же код (содержащий задачи) как для производителей (клиентов), так и для потребителей (работников). Тем не менее, Celery - это классная программа, которая позволяет вам планировать задачи без необходимости распространять код на стороне производителя. Для этого необходимо использовать метод send_task () . Вы должны сконфигурировать продюсера с теми же параметрами, что и у ваших работников (естественно, того же брокера, с той же сериализацией), и вы должны знать имя вызывающей задачи и ее параметры, чтобы правильно планировать ее выполнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...