Django, ImportError: cannot import name 'task' from 'celery'

У меня есть Django приложение, которое использовало Celery версии 4.4.2, которое работало нормально.

from celery import task
import logging


@task(ignore_result=True)
def log_user_activity(user_id):
    try:
        logging.info(user_id)
    except Exception as e:
        logging.error(str(e))

При попытке обновить версию Celery до v5.2.2 я получаю следующую ошибку:

ImportError: cannot import name 'task' from 'celery'

Может ли кто-нибудь помочь, на что была заменена задача? у них все еще есть пример здесь с тем же самым. https://github.com/celery/celery/blob/v5.2.2/examples/celery_http_gateway/tasks.py

Этот API был устаревшим, а затем удален в версии 5.0.

На этой странице предлагается изменить

from celery import task

инто

from celery import shared_task

Есть и другие изменения, которые не относятся к фрагменту, который вы опубликовали, но могут относиться к остальной части вашего кода. Смотрите эту страницу (и остальную документацию, особенно раздел Upgrading from Celery 4.x) для более подробной информации.

Некоторые старые вещи устарели в Celery 5.0, а последняя версия сельдерея работает нормально, и большинство новых вещей добавлены в новой версии. Рекомендуется: вам нужно использовать последнюю версию celery.

celery.py

from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'pj_name.settings')
app = Celery('pj_name')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

после этого зайдите в app/tasks.py и добавьте свою первую функцию планировщика.

from pj_name.celery import app
@app.task
def first_task():
    pass

приведенный выше блок кода работает, если вы используете celery последней версии.

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