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!
任务属性
任务属性:
queue
exchange
exchange_type
routing_key
delivery_mode
priority
已弃用,必须由 :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.id
Result.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()
相反。