Я пытаюсь использовать django в сочетании с сельдереем.
Поэтому я наткнулся на autodiscover_tasks()
и не совсем уверен, как их использовать. Рабочие сельдерея получают задачи, добавленные другими приложениями (в данном случае серверной частью узла).
До сих пор я использовал это для запуска рабочего:
celery worker -Q extraction --hostname=extraction_worker
, который отлично работает.
Я не совсем понимаю, в чем заключается общая идея интеграции django -celery. Должны ли рабочие по-прежнему запускаться из внешнего источника (например, с помощью приведенной выше команды) или они должны управляться и запускаться из приложения django?
Мой celery.py выглядит так:
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'main.settings')
app = Celery('app')
app.config_from_object('django.conf:settings', namespace='CELERY')
# Load task modules from all registered Django app configs.
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
тогда у меня есть 2 приложения, содержащие файл tasks.py с:
@shared_task
def extraction(total):
return 'Task executed'
как я могу теперь зарегистрировать django для регистрации рабочего для этих задач?