Сельдерей - Как отправить задачу с удаленной машины?
У нас есть сервер, на котором работают сельдерей и очередь Redis. Задачи определены на этом сервере.
Мне нужно иметь возможность вызывать эти задачи с удаленной машины.
Я знаю, что это делается с помощью send_task
, но я до сих пор не понял, КАК? Как сообщить send_task
, где находится очередь? Где я могу передать параметры соединения (или что нужно)? Я искал часы, и все, что я могу найти, это:
from celery.execute import send_task
send_task('tasks.add')
Ну, это означает, что мне нужно celery
на моей вызывающей машине. Но что еще мне нужно настроить?
Ответы
Ответ 1
Это может быть способ:
Создавая объект Celery и используя send_task с этого объекта, объект может иметь конфигурацию, чтобы найти брокера.
from celery import Celery
celery = Celery()
celery.config_from_object('celeryconfig')
celery.send_task('tasks.add', (2,2))
celeryconfig - это файл, содержащий конфигурацию сельдерея. Существуют другие способы настройки конфигурации объекта сельдерея.
Ответ 2
на удаленном компьютере, запустите сельдерей с помощью broker_url, указывающего на машину, на которой вы хотите запустить задачи. Затем просто отправьте задачи (если у вас есть определенные очереди для отправки, а затем добавьте соответствующие ключи маршрутизации).
Ответ 3
Существует несколько способов определения правил маршрутизации, наиболее общим из которых является пользовательский объект маршрутизатора. Во всех случаях вызывающий абонент просто предоставляет параметр routing_key
в send_task
, delay
или apply_async
, и маршрутизатор определяет, в какую очередь отправлять эту задачу.
Ответ 4
То, что вы нашли, было правильным.
from celery.execute import send_task
send_task('tasks.add')
Если нужны какие-либо аргументы
send_taks('tasks.add', kwargs={'a'=1, 'b'=2})