Запуск задачи Celery при невозможности импорта этой задачи

У меня два сервера: на одном запущено приложение django, а на другом - очередь rabbitmq и сельдерей. worker. Мой tasks.py на сервере, на котором запущена очередь / worker, содержит следующую задачу:

@task(queue="reports")
def test_task():
    time.sleep(120)

Моя цель - выполнить эту задачу из представления django. Поскольку код для задачи находится на другом сервере, чем представление django Я хотел бы вызвать задачу, я пытаюсь использовать следующий код для отправки задачи из django на рабочую машину.

send_task("tasks.test_task", task_id=task_id, args=[], kwargs={}, publisher=publisher, queue=queue)

Я нашел этот метод здесь , но пока тестировал его, не удалось не сработало.

Я тестирую с помощью tail -F файл журнала celery worker на сервере celery worker, затем перехожу к URL-адресу представления, содержащего send_task, в браузере. Я ищу задачу, которая должна появиться как «получено» в выходных данных хвоста, но это не так.

Уровень журнала работника сельдерея - DEBUG, файл журнала показывает, что задача зарегистрирована с правильным именем, а приложение django se ttings.py содержит правильный IP-адрес и учетные данные для сервера rabbitmq. Пробуя разные подходы, я иногда видел сообщение об ошибке в файле журнала сельдерея, когда я менял строку, переданную в send_task, на что-то, что не было допустимой задачей (например, send_task ('asdf')). Это вызвало ошибку UnregisteredError в файле журнала.Однако это случается только иногда, и пока, тестируя различные комбинации настроек и вызовов, я не нашел способа надежно воспроизвести поведение.

Кроме того, это соответствующий раздел settings.py в проекте django (с удаленными фактическими значениями):

CELERY_RESULT_BACKEND = 'amqp'
BROKER_HOST = 'the.correct.IP.address'
BROKER_USER = 'the_correct_user'
BROKER_PASSWORD = 'the_correct_pass'
BROKER_VHOST = 'the_correct_vhost'
BROKER_PORT = 5672

Я поискал в гугле и мало что нашел в send_task. Есть идеи, что я делаю неправильно?

6
задан Emmett Butler 19 December 2011 в 18:42
поделиться