Celery 弃用时间线 — Python 文档
来自菜鸟教程
Celery/docs/latest/internals/deprecation
Celery 弃用时间表
版本 5.0 的删除
旧任务 API
兼容任务模块
模块
celery.decorators将被移除:这意味着您需要更改:
from celery.decorators import task进入:
from celery import task模块
celery.task将被移除这意味着你应该改变:
from celery.task import task进入:
from celery import shared_task-和: .. 代码块:: python
从芹菜导入任务
进入:
from celery import shared_task-和:
from celery.task import Task进入:
from celery import Task
请注意,新的 Task 类不再对这些方法使用 classmethod():
- 延迟
- apply_async
- 重试
- 申请
- 异步结果
- 子任务
这也意味着你不能直接在类上调用这些方法,而必须先实例化任务:
>>> MyTask.delay() # NO LONGER WORKS
>>> MyTask().delay() # WORKS!
任务属性
任务属性:
queueexchangeexchange_typerouting_keydelivery_modepriority
已弃用,必须由 :setting:`task_routes` 设置。
要移除的模块
celery.execute此模块仅包含
send_task:必须替换为@send_task。celery.decorators请参阅 兼容任务模块
celery.log请改用
@log。celery.messaging请改用
@amqp。celery.registry请改用
celery.app.registry。celery.task.control请改用
@control。celery.task.schedules请改用
celery.schedules。celery.task.chords请改用
celery.chord()。
设置
BROKER 设置
| 设置名称 | 用。。。来代替 |
|---|---|
BROKER_HOST
|
:设置:`broker_url` |
BROKER_PORT
|
:设置:`broker_url` |
BROKER_USER
|
:设置:`broker_url` |
BROKER_PASSWORD
|
:设置:`broker_url` |
BROKER_VHOST
|
:设置:`broker_url` |
REDIS 结果后端设置
| 设置名称 | 用。。。来代替 |
|---|---|
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` |
任务发送信号
:signal:`task_sent` 信号将在 4.0 版本中删除。 请改用 :signal:`before_task_publish` 和 :signal:`after_task_publish` 信号。
结果
适用于:AsyncResult、EagerResult:
Result.wait()->Result.get()Result.task_id()->Result.idResult.status->Result.state。
版本 2.0 的删除
- 以下设置将被删除:
| 设置名称 | 用。。。来代替 |
|---|---|
| CELERY_AMQP_CONSUMER_QUEUES | 任务队列 |
| CELERY_AMQP_CONSUMER_QUEUES | 任务队列 |
| CELERY_AMQP_EXCHANGE | task_default_exchange |
| CELERY_AMQP_EXCHANGE_TYPE | task_default_exchange_type |
| CELERY_AMQP_CONSUMER_ROUTING_KEY | 任务队列 |
| CELERY_AMQP_PUBLISHER_ROUTING_KEY | task_default_routing_key |
CELERY_LOADER没有类名的定义。例如,celery.loaders.default,需要包含类名:celery.loaders.default.Loader。
TaskSet.run()。 使用celery.task.base.TaskSet.apply_async()相反。