Celery 简介 — Python 文档
芹菜简介
什么是任务队列?
任务队列用作跨线程或机器分配工作的机制。
任务队列的输入是一个称为任务的工作单元。 专用工作进程不断监视任务队列以执行新工作。
Celery 通过消息进行通信,通常使用代理在客户端和工人之间进行调解。 为了启动一个任务,客户端将一条消息添加到队列中,然后代理将该消息传递给工作人员。
Celery 系统可以由多个 worker 和 broker 组成,让位于高可用性和水平扩展。
Celery 是用 Python 编写的,但该协议可以用任何语言实现。 除了 Python 之外,还有用于 Node.js 的 node-celery 和 node-celery-ts,以及一个 PHP 客户端 。
还可以通过公开 HTTP 端点并具有请求它的任务(webhooks)来实现语言互操作性。
我需要什么?
版本要求
Celery 5.1 版运行于
- 蟒蛇❨3.6、3.7、3.8❩
- PyPy3.6 ❨7.3❩
Celery 4.x 是最后一个支持 Python 2.7 的版本,Celery 5.x 需要 Python 3.6 或更新版本。 Celery 5.1.x 还需要 Python 3.6 或更新版本。
如果您运行的是旧版本的 Python,则需要运行旧版本的 Celery:
- Python 2.7 或 Python 3.5:Celery 系列 4.4 或更早版本。
- Python 2.6:Celery 系列 3.1 或更早版本。
- Python 2.5:Celery 系列 3.0 或更早版本。
- Python 2.4 是 Celery 系列 2.2 或更早版本。
Celery 是一个资金最少的项目,所以我们不支持 Microsoft Windows。 请不要打开与该平台相关的任何问题。
Celery 需要消息传输来发送和接收消息。 RabbitMQ 和 Redis 代理传输功能齐全,但也支持无数其他实验性解决方案,包括使用 SQLite 进行本地开发。
Celery 可以在单台机器上运行,也可以在多台机器上运行,甚至可以跨数据中心运行。
芹菜是…
简单的
高可用
Worker 和客户端会在连接丢失或失败的情况下自动重试,一些 Broker 以 Primary/Primary 或 Primary/Replica 复制的方式支持 HA。
快速地
单个 Celery 进程每分钟可以处理数百万个任务,具有亚毫秒级的往返延迟(使用 RabbitMQ、librabbitmq 和优化设置)。
灵活的
Celery 的几乎每个部分都可以扩展或单独使用,自定义池实现、序列化程序、压缩方案、日志记录、调度程序、消费者、生产者、代理传输等等。
它支持
|
|
特点
框架集成
Celery 很容易与 web 框架集成,其中一些甚至有集成包:
对于 Django,请参阅 Django 的第一步 。
集成包并不是绝对必要的,但它们可以使开发更容易,有时它们会添加重要的钩子,比如在 fork(2) 关闭数据库连接。
快速跳跃
我想要⟶
安装
您可以通过 Python Package Index (PyPI) 或从源代码安装 Celery。
使用 pip 安装:
$ pip install -U Celery
捆绑
Celery 还定义了一组包,可用于安装 Celery 和给定功能的依赖项。
您可以在您的要求中或使用括号在 pip 命令行上指定这些。 可以通过用逗号分隔来指定多个包。
$ pip install "celery[librabbitmq]"
$ pip install "celery[librabbitmq,redis,auth,msgpack]"
以下捆绑包可用:
序列化器
celery[auth]
- 用于使用
auth
安全序列化程序。 celery[msgpack]
- 用于使用 msgpack 序列化程序。
celery[yaml]
- 用于使用 yaml 序列化程序。
传输和后端
celery[librabbitmq]
用于使用 librabbitmq C 库。
celery[redis]
使用 Redis 作为消息传输或结果后端。
celery[sqs]
使用 Amazon SQS 作为消息传输( 实验 )。
celery[tblib]
用于使用 :setting:`task_remote_tracebacks` 功能。
celery[memcache]
使用 Memcached 作为结果后端(使用 :pypi:`pylibmc`)
celery[pymemcache]
使用 Memcached 作为结果后端(纯 Python 实现)。
celery[cassandra]
使用 Apache Cassandra 作为 DataStax 驱动程序的后端。
celery[couchbase]
使用 Couchbase 作为结果后端。
celery[arangodb]
使用 ArangoDB 作为结果后端。
celery[elasticsearch]
使用 Elasticsearch 作为结果后端。
celery[riak]
使用 Riak 作为结果后端。
celery[dynamodb]
使用 AWS DynamoDB 作为结果后端。
celery[zookeeper]
使用 Zookeeper 作为消息传输。
celery[sqlalchemy]
使用 SQLAlchemy 作为结果后端 (supported)。
celery[pyro]
用于使用 Pyro4 消息传输( 实验性 )。
celery[slmq]
用于使用 SoftLayer 消息队列传输( 实验性 )。
celery[consul]
使用 Consul.io 键/值存储作为消息传输或结果后端( 实验 )。
celery[django]
指定 Django 支持可能的最低版本。
您可能不应该在您的要求中使用它,它仅用于提供信息。
从源下载和安装
从 PyPI 下载最新版本的 Celery:
https://pypi.org/project/celery/
您可以通过执行以下操作来安装它:
$ tar xvfz celery-0.0.0.tar.gz
$ cd celery-0.0.0
$ python setup.py build
# python setup.py install
如果您当前未使用 virtualenv,则必须以特权用户身份执行最后一条命令。
使用开发版
带点
Celery 开发版还需要开发版 :pypi:`kombu`, :pypi:`amqp`, :pypi:`billiard`, 和:pypi:`vine`。
您可以使用以下 pip 命令安装这些的最新快照:
$ pip install https://github.com/celery/celery/zipball/master#egg=celery
$ pip install https://github.com/celery/billiard/zipball/master#egg=billiard
$ pip install https://github.com/celery/py-amqp/zipball/master#egg=amqp
$ pip install https://github.com/celery/kombu/zipball/master#egg=kombu
$ pip install https://github.com/celery/vine/zipball/master#egg=vine