Сельдерей не запускает задачу - PullRequest
0 голосов
/ 21 сентября 2018

Помогите, пожалуйста, понять, что я делаю не так.Celery не выполняет мою задачу.

Settings.py
CELERY_BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = TIME_ZONE

proj / celery.py

from __future__ import absolute_import
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings') 

app = Celery('proj')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

init .py

from __future__ import absolute_import, unicode_literals
from celery import app as celery_app   
__all__ = ['celery_app']

Код

@shared_task
def generate(instance, sender, **kwargs):
    for i in CK_PROGRAM_NAME:
        program_kf = i[0]
        ck = instance.dk*program_kf
        program_name = i[1]
        program_obj = Program.objects.get(name=program_name)
        foodprogram_generator(instance, ck, program_kf, program_obj, sender, **kwargs)
    return

@receiver(post_save, sender=LeadUser)
def leaduser_foodprogram_post_save(instance, sender, **kwargs):
    generate.delay(instance, sender, **kwargs)
    return

Работником управляет: celery -A proj worker --loglevel = INFO

Логика такова: после создания client_object запускается сигнал post_save leaduser_foodprogram_post_save, который добавляет к генерации очереди()

Я вижу результат, поэтому я думаю, что он не запущен.Без сельдерея все работает нормально.

Спасибо за ответы!

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Спасибо, ребята, за ваши ответы, особых проблем не было, но я все перепроверил и, согласно этой статье , выполнил свою задачу:

0 голосов
/ 22 сентября 2018

Пара вещей: * config_from_object с пространством имен может убрать это из переменных, так что вы можете не получить то, что хотите в качестве конфигурации, * когда вы видите общую задачу, вам нужно убедиться, что вы вызываете задачу изсконфигурированное приложение сельдерея, так как основной смысл использования общей задачи заключается в том, чтобы фактически распределять задачи между различными приложениями.Взгляните на функцию set_default в объекте приложения сельдерея, просто вызвав ее в настройке сельдерея, вы увидите разницу.В любом случае, лучший способ проверить это - поместить туда rdb и осмотреть приложение сельдерея, проверить конфигурацию, а если брокер не настроен, то второй пункт, описанный в моем предыдущем комментарии, должен помочь вам

...