This document describes the current stable version of Celery (3.1). For development docs, go here.
Celery Deprecation Timeline¶
Removals for version 3.2¶
Module
celery.task.tracehas been renamed tocelery.app.traceas thecelery.taskpackage is being phased out. The compat module will be removed in version 3.2 so please change any import from:from celery.task.trace import …
to:
from celery.app.trace import …
AsyncResult.serializable()andcelery.result.from_serializablewill be removed.Use instead:
>>> tup = result.as_tuple() >>> from celery.result import result_from_tuple >>> result = result_from_tuple(tup)
Removals for version 4.0¶
Old Task API¶
Compat Task Modules¶
Module
celery.decoratorswill be removed:Which means you need to change:
from celery.decorators import task
Into:
from celery import task
Module
celery.taskmay 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 classmethods 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!
TaskSet¶
TaskSet has been renamed to group and TaskSet will be removed in version 4.0.
Old:
>>> from celery.task import TaskSet
>>> TaskSet(add.subtask((i, i)) for i in xrange(10)).apply_async()
New:
>>> from celery import group
>>> group(add.s(i, i) for i in xrange(10))()
Magic keyword arguments¶
The magic keyword arguments accepted by tasks will be removed
in 4.0, so you should start rewriting any tasks
using the celery.decorators module and depending
on keyword arguments being passed to the task,
for example:
from celery.decorators import task
@task()
def add(x, y, task_id=None):
print("My task id is %r" % (task_id, ))
should be rewritten into:
from celery import task
@task(bind=True)
def add(self, x, y):
print("My task id is {0.request.id}".format(self))
Task attributes¶
The task attributes:
queueexchangeexchange_typerouting_keydelivery_modepriority
is deprecated and must be set by CELERY_ROUTES instead.
celery.result¶
BaseAsyncResult->AsyncResult.TaskSetResult->GroupResult.TaskSetResult.total->len(GroupResult)TaskSetResult.taskset_id->GroupResult.id
Apply to: AsyncResult,
EagerResult:
- ``Result.wait()`` -> ``Result.get()``
Result.task_id()->Result.idResult.status->Result.state.
celery.loader¶
current_loader()->current_app.loaderload_settings()->current_app.conf
Task_sent signal¶
The task_sent signal will be removed in version 4.0.
Please use the before_task_publish and after_task_publush
signals instead.
Modules to Remove¶
celery.executeThis module only contains
send_task, which must be replaced withapp.send_taskinstead.celery.decoratorscelery.logUse
app.loginstead.celery.messagingUse
app.amqpinstead.celery.registryUse
celery.app.registryinstead.celery.task.controlUse
app.controlinstead.celery.task.schedulesUse
celery.schedulesinstead.celery.task.chordsUse
celery.chord()instead.
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 |
CELERY_RESULT_BACKEND |
CELERY_REDIS_PORT |
CELERY_RESULT_BACKEND |
CELERY_REDIS_DB |
CELERY_RESULT_BACKEND |
CELERY_REDIS_PASSWORD |
CELERY_RESULT_BACKEND |
REDIS_HOST |
CELERY_RESULT_BACKEND |
REDIS_PORT |
CELERY_RESULT_BACKEND |
REDIS_DB |
CELERY_RESULT_BACKEND |
REDIS_PASSWORD |
CELERY_RESULT_BACKEND |
Logging Settings¶
| Setting name | Replace with |
|---|---|
CELERYD_LOG_LEVEL |
--loglevel |
CELERYD_LOG_FILE |
--logfile` |
CELERYBEAT_LOG_LEVEL |
--loglevel |
CELERYBEAT_LOG_FILE |
--loglevel` |
CELERYMON_LOG_LEVEL |
--loglevel |
CELERYMON_LOG_FILE |
--loglevel` |
Other Settings¶
| Setting name | Replace with |
|---|---|
CELERY_TASK_ERROR_WITELIST |
Annotate Task.ErrorMail |
CELERY_AMQP_TASK_RESULT_EXPIRES |
CELERY_TASK_RESULT_EXPIRES |
Removals for version 2.0¶
- The following settings will be removed:
| Setting name | Replace with |
|---|---|
| CELERY_AMQP_CONSUMER_QUEUES | CELERY_QUEUES |
| CELERY_AMQP_CONSUMER_QUEUES | CELERY_QUEUES |
| CELERY_AMQP_EXCHANGE | CELERY_DEFAULT_EXCHANGE |
| CELERY_AMQP_EXCHANGE_TYPE | CELERY_DEFAULT_AMQP_EXCHANGE_TYPE |
| CELERY_AMQP_CONSUMER_ROUTING_KEY | CELERY_QUEUES |
| CELERY_AMQP_PUBLISHER_ROUTING_KEY | CELERY_DEFAULT_ROUTING_KEY |
CELERY_LOADERdefinitions without class name.E.g. celery.loaders.default, needs to include the class name: celery.loaders.default.Loader.
TaskSet.run(). Usecelery.task.base.TaskSet.apply_async()instead.
The module
celery.task.rest; usecelery.task.httpinstead.