Я использую сельдерей и rabbitmq в качестве брокера для выполнения моих асинхронных задач в моих проектах django.Когда я использовал URL-адрес брокера по умолчанию, все работало нормально, но на моем производственном сервере мне нужно было запустить два проекта django, для каждого из которых потребуется менеджер асинхронных задач.Теперь, чтобы сделать это, я создал два vhosts в rabbitmq.Затем я изменил свой CELERY_BROKER_URL в settings.py на amqp: // guest: guest @ localhost: 5672 / vhost_name в обоих проектах.
Затем я запустил его, используя supervisor worker с командой celery -A alice worker-l информация (Алиса - это корень проекта, в котором находится celery.py).Как ни странно, один мой проект работает нормально, но в другом задание получено, но не выполнено!Итак, для этого проекта я изменил его на CELERY_BROKER_URL по умолчанию, и он начал работать, а также запустил задачи, которые не были выполнены.
Для отладки я запустил то же самое на своей локальной машине и то же самоеполучилось.Конфигурации проекта в основном схожи, кроме количества задач.В первом проекте (который работал) было 3 задачи, а в другом - 8 задач.
Это ошибка?Если нет, то кто-нибудь может указать мне правильное направление?
celery.py в корне проекта
import os
import logging
from celery import Celery
from decouple import config
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'alice.settings')
app = Celery('alice')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
if config("ENVIRONMENT") == "PRODUCTION":
from raven import Client
from raven.contrib.celery import register_signal, register_logger_signal
from django.conf import settings
client = Client(settings.RAVEN_DSN)
register_logger_signal(client)
register_logger_signal(client, loglevel=logging.INFO)
register_signal(client)
register_signal(client, ignore_expected=True)
версии сельдерея
amqp==2.2.2
billiard==3.5.0.3
celery==4.1.0
kombu==4.1.0
vine==1.1.4