Я новичок в сельдерее и, возможно, делаю что-то не так, но я уже
провел много попыток выяснить, как настроить сельдерей
правильно.
Итак, в моей среде у меня есть 2 удаленных сервера; один главный (он имеет
публичный IP-адрес и большинство таких вещей, как сервер базы данных, rabbitmq
сервер и веб-сервер, на котором запущено мое веб-приложение) и другой
используется для конкретных задач, которые я хочу вызвать из асинхронно
основной сервер с использованием сельдерея.
Я планировал использовать RabbitMQ в качестве брокера и в качестве бэк-энда результатов.
Конфигурация сельдерея очень проста:
CELERY_IMPORTS = ("main.tasks", )
BROKER_HOST = "Public IP of my main server"
BROKER_PORT = 5672
BROKER_USER = "guest"
BROKER_PASSWORD = "guest"
BROKER_VHOST = "/"
CELERY_RESULT_BACKEND = "amqp"
Когда я запускаю работника на главном сервере, задачи выполняются просто
хорошо, но когда я запускаю его на удаленном сервере только несколько задач
выполняются, а затем работник застревает не в состоянии выполнить любой
задача. Когда я перезагружаю работника, он выполняет еще несколько задач и получает
застрял снова. Там нет ничего особенного в задаче, и я даже пытался
тестовое задание, которое просто добавляет 2 числа. Я пытался запустить рабочий
по-разному (демонизировать и нет, устанавливая другой параллелизм и
используя celeryd_multi), ничего не помогло.
В чем может быть причина? Я что-то пропустил? Должен ли я бежать
что-то на главном сервере, кроме брокера (RabbitMQ)? Или
это ошибка в сельдерее (я пробовал несколько версий: 2.2.4, 2.3.3 и dev,
но никто из них не работал)?
Хм ... Я только что воспроизвел ту же проблему на местном работнике, поэтому я
не знаю, что это такое ... Требуется ли перезагрузить сельдерей?
рабочий после каждого N выполненных задач?
Любая помощь будет очень ценится:)