Планировщик Celery не выполняет задание

Я пытался использовать Celery для регулярного запроса внешнего api и обновления базы данных в моем Django проекте новыми данными. Celery правильно планирует задачу и отправляет ее на celery worker, но она никогда ничего не выполняет.

Вот мой файл celery.py, который находится на том же уровне, что и мой settings.py:

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
from django.conf import settings
from celery.schedules import crontab

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "data_analysis.settings")
app = Celery("data_analysis")
app.conf.enable_utc = False
app.conf.update(timezone= 'Asia/Kolkata')
app.config_from_object(settings, namespace="CELERY")
app.autodiscover_tasks()
app.conf.beat_schedule = {
    'update_all_api':{
        'task':'operations.tasks.celery_update',
        'schedule': 30.0,
    }
}


@app.task(bind=True)
def debug_task(self):
    print(f'Request: {self.request!r}')


Вот мой tasks.py, который находится внутри приложения под названием 'operations':

from celery import shared_task
import time
from operations.models import Machine, MachineData
from operations.analytics.processing import get_data


@shared_task(bind=True)
def celery_update(self):
    print('Running Update')
    print('The time is :' + str(time.asctime(time.localtime(time.time()))))
    print('Getting Data ...')
    all_machines = Machine.objects.all()
    for machine in all_machines:
        data_list = get_data(machine.api_url)
        for data in data_list:
            # print(data)
            if not MachineData.objects.filter(data=data):
                print('New Data received for :' + str(machine))
                MachineData.objects.create(machine=machine, data=data)
            else:
                print('No new data for : ' + str(machine))
    return 'done'

Планировщик отправляет задание на celery worker, но он никогда не выполняет функцию.

Вот скриншот настроек и структуры каталогов и терминала. settings

Если кто-то может указать на мою ошибку, это будет очень полезно.

В дополнение к запуску celery beat для производства задач, Вы должны запустить celery worker следующим образом:

celery -A data_analysis worker -l info

celery beat производит задание, а затем, celery worker выполнит его.

Вернуться на верх