Celery Deprecation Time-line — Python documentation

From Get docs
Celery/docs/latest/internals/deprecation

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: .. code-block:: python

    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 :setting:`task_routes` instead.


Modules to Remove

  • celery.execute

    This module only contains send_task: this must be replaced with @send_task instead.

  • celery.decorators

  • celery.log

    Use @log instead.

  • celery.messaging

    Use @amqp instead.

  • celery.registry

    Use celery.app.registry instead.

  • celery.task.control

    Use @control instead.

  • celery.task.schedules

    Use celery.schedules instead.

  • celery.task.chords

    Use celery.chord() instead.


Settings

BROKER Settings

Setting name Replace with
BROKER_HOST :setting:`broker_url`
BROKER_PORT :setting:`broker_url`
BROKER_USER :setting:`broker_url`
BROKER_PASSWORD :setting:`broker_url`
BROKER_VHOST :setting:`broker_url`


REDIS Result Backend Settings

Setting name Replace with
CELERY_REDIS_HOST :setting:`result_backend`
CELERY_REDIS_PORT :setting:`result_backend`
CELERY_REDIS_DB :setting:`result_backend`
CELERY_REDIS_PASSWORD :setting:`result_backend`
REDIS_HOST :setting:`result_backend`
REDIS_PORT :setting:`result_backend`
REDIS_DB :setting:`result_backend`
REDIS_PASSWORD :setting:`result_backend`


Task_sent signal

The :signal:`task_sent` signal will be removed in version 4.0. Please use the :signal:`before_task_publish` and :signal:`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 :setting:`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.