This document describes the current stable version of Celery (5.4). For development docs, go here.

Celery Deprecation Time-line

Removals for version 5.0

Old Task API

Compat Task Modules

  • Module celery.decorators will be removed:

    This means you need to change:

    from celery.decorators import task
    

    Into:

    from celery import task
    
  • Module celery.task will be removed

    This means you should change:

    from celery.task import task
    

    into:

    from celery import shared_task
    

    —and:

    from celery import task
    

    into:

    from celery import shared_task
    

    —and:

    from celery.task import Task
    

    into:

    from celery import Task
    

Note that the new Task class no longer uses classmethod() for these methods:

  • delay

  • apply_async

  • retry

  • apply

  • AsyncResult

  • subtask

This also means that you can’t call these methods directly on the class, but have to instantiate the task first:

>>> MyTask.delay()          # NO LONGER WORKS


>>> MyTask().delay()        # WORKS!

Task attributes

The task attributes:

  • queue

  • exchange

  • exchange_type

  • routing_key

  • delivery_mode

  • priority

is deprecated and must be set by task_routes instead.

Modules to Remove

Settings

BROKER Settings

Setting name

Replace with

BROKER_HOST

broker_url

BROKER_PORT

broker_url

BROKER_USER

broker_url

BROKER_PASSWORD

broker_url

BROKER_VHOST

broker_url

REDIS Result Backend Settings

Setting name

Replace with

CELERY_REDIS_HOST

result_backend

CELERY_REDIS_PORT

result_backend

CELERY_REDIS_DB

result_backend

CELERY_REDIS_PASSWORD

result_backend

REDIS_HOST

result_backend

REDIS_PORT

result_backend

REDIS_DB

result_backend

REDIS_PASSWORD

result_backend

Task_sent signal

The task_sent signal will be removed in version 4.0. Please use the before_task_publish and after_task_publish signals instead.

Result

Apply to: AsyncResult, EagerResult:

  • Result.wait() -> Result.get()

  • Result.task_id() -> Result.id

  • Result.status -> Result.state.

Settings

Setting name

Replace with

CELERY_AMQP_TASK_RESULT_EXPIRES

result_expires

Removals for version 2.0

  • The following settings will be removed:

Setting name

Replace with

CELERY_AMQP_CONSUMER_QUEUES

task_queues

CELERY_AMQP_CONSUMER_QUEUES

task_queues

CELERY_AMQP_EXCHANGE

task_default_exchange

CELERY_AMQP_EXCHANGE_TYPE

task_default_exchange_type

CELERY_AMQP_CONSUMER_ROUTING_KEY

task_queues

CELERY_AMQP_PUBLISHER_ROUTING_KEY

task_default_routing_key

  • CELERY_LOADER definitions without class name.

    For example,, celery.loaders.default, needs to include the class name: celery.loaders.default.Loader.

  • TaskSet.run(). Use celery.task.base.TaskSet.apply_async()

    instead.