В сельдерее Джанго работают несколько рабочих с разными очередями - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь настроить три очереди / рабочие для сельдерея в django.

settings.py

CELERY_BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TASK_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Europe/Berlin'
CELERY_QUEUES = (
    Queue('manually_task', Exchange('manually_task'), routing_key='manually_task'),
    Queue('periodically_task', Exchange('periodically_task'), routing_key='periodically_task'),
    Queue('firsttime_task', Exchange('firsttime_task'), routing_key='firsttime_task'),
)
CELERY_ROUTES = {
    'api.tasks.manually_task': {
        'queue': 'manually_task',
        'routing_key': 'manually_task',
    },
    'api.tasks.periodically_task': {
        'queue': 'periodically_task',
        'routing_key': 'periodically_task',
    },
    'api.tasks.firsttime_task': {
        'queue': 'firsttime_task',
        'routing_key': 'firsttime_task',
    },
}

У меня три задачи, и у каждой задачи должна быть своя собственная очередь / рабочий.Мои задачи выглядят так:

@shared_task
def manually_task(website_id):
    print("manually_task");
    website = Website.objects.get(pk=website_id)
    x = Proxy(website, "49152")
    x.startproxy()
    x = None


@periodic_task(run_every=(crontab(hour=19, minute=15)), ignore_result=True)
def periodically_task():
    websites = Website.objects.all()

    for website in websites:
        x = Proxy(website, "49153")
        x.startproxy()
        x = None


@shared_task
def firsttime_task(website_id):
    website = Website.objects.get(pk=website_id)
    x = Proxy(website, "49154")
    x.startproxy()
    x = None

Теперь для первой пробной версии я запускаю только одного работника:

celery -A django-proj worker -Q manually_task -n manually_task

Моя проблема заключается в том, что задача не выполняется, по-видимому, "manual_task" не распечатана,Почему это не работает?

...