This document describes the current stable version of Celery (4.0). 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 may be removed (not decided)

    This means you should change:

    from celery.task import task
    

    into:

    from celery import 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.