Общие задачи Celery зависают до тех пор, пока не будет запущена обычная задача
Я работаю с Celery и Django. У меня есть две задачи:
@app.task(bind=True)
def debug_normal_task(self):
print('Hello World')
@shared_task(bind=True)
def debug_shared_task(self):
print('Hello World')
Whenever I try to run debug_shared_task
, Celery hangs indefinitely, every time. It does this until I run debug_normal_task
once.
As soon as I run debug_normal_task
, debug_shared_task
starts working perfectly, every time.
То же самое происходит с каждой из моих общих задач по всему проекту.
Ни одна из них не работает -> я запускаю одну обычную задачу в любом месте -> все они работают.
Я могу переключить их все на обычные задачи или просто запустить обычную задачу при запуске проекта, но я хотел бы понять, почему она ведет себя так с самого начала.
Здесь перечислены файлы:
views.py
from ceom.celery import debug_normal_task, debug_shared_task
def news(request):
debug_shared_task.delay() #Doesn't work
debug_normal_task.delay()
debug_shared_task.delay() #Works
...
celery.py
from __future__ import absolute_import
import os
from celery import Celery, shared_task
from celery.schedules import crontab
from ceom.celeryq.tasks_periodic import update_datasets
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ceom.settings")
app = Celery("ceom")
app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks()
@app.task(bind=True)
def debug_normal_task(self):
print('Hello World')
@shared_task(bind=True)
def debug_shared_task(self):
print('Hello World')
__init__.py
from __future__ import absolute_import
from ceom.celery import app as celery_app
__all__ = ('celery_app',)
I'll admit I don't really know exactly what __init__.py does here. I got it from here. It's my understanding that I have to import something from celery.py, otherwise it won't be run and the tasks won't be registered. I think something similar might be happening for my shared task issue, but I'm not sure.