Как отправить задачу Celery с одной машины на другую? - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь отправить задание от сельдерея на машине А работнику сельдерея на машине Б с помощью «имени задачи».

Все задачи определены на машине B, и только одна задача находится на машине A. Я хотел бы передать имя задачи имя работнику Machine A и выполнить задачу с тем же именем задачи на машине B.

Как я могу общаться друг с другом.

Сохраняем ли мы одинаковые broker_url на обоих рабочих местах или что?

Я использую Redis в качестве URL-адреса брокера и бэкэнда результата.

1 Ответ

0 голосов
/ 18 декабря 2018

(1) вы можете сделать это с отдельными посредниками для машины A и машины B. redis по умолчанию обычно предоставляет вам шестнадцать баз данных, пронумерованных от 0 до 15.Таким образом, вы можете очень легко назначить db 0 для использования в качестве посредника для A и назначить db 1 для посредника для B. Затем, чтобы отправить задачу из B в A, вы можете использовать send_task:

from celery import Celery
app = Celery('redis://myredis-server:6379/0')
app.send_task('task_name', kwargs={ 'param1': 'value1' })

(2) вы также можете сделать это с одним брокером, если вы используете отдельные очереди сельдерея.

...