你正在阅读 Celery 3.1 的文档。开发版本文档见: 此处.
任务队列是一种在线程或机器间分发任务的机制。
消息队列的输入是工作的一个单元,称为任务,独立的职程(Worker)进程持续 监视队列中是否有需要处理的新任务。
Celery 用消息通信,通常使用中间人(Broker)在客户端和职程间斡旋。这个过程 从客户端向队列添加消息开始,之后中间人把消息派送给职程。
Celery 系统可包含多个职程和中间人,以此获得高可用性和横向扩展能力。
Celery 是用 Python 编写的,但协议可以用任何语言实现。迄今,已有 Ruby 实现 的 RCelery 、node.js 实现的 node-celery 以及一个 PHP 客户端 ,语言 互通也可以通过 using webhooks 实现。
Celery 需要一个发送和接受消息的传输者。RabbitMQ 和 Redis 中间人 的消息传输支持所有特性,但也提供大量其他实验性方案的支持,包括 用 SQLite 进行本地开发。
Celery 可以单机运行,也可以在多台机器上运行,甚至可以跨越数据中心运行。
简单
高可用性
倘若连接丢失或失败,职程和客户端会自动重试,并且一些中间人 通过 主/主 或 主/从 方式复制来提高可用性。
快速
单个 Celery 进程每分钟可处理数以百万计的任务,而保持往返延迟 在亚毫秒级(使用 RabbitMQ、py-librabbitmq 和优化过的设置)。
灵活
Celery 几乎所有部分都可以扩展或单独使用。可以自制连接池、 序列化、压缩模式、日志、调度器、消费者、生产者、自动扩展、 中间人传输或更多。
它支持
|
|
Celery 易于与 Web 框架集成,其中的一些甚至已经有了集成包:
集成包并非是严格必要的,但它们让开发更简便,并且有时它们在 fork(2) 上添加了比如关闭数据库连接这样的重要回调。
你可以从 Python Package Index(PyPI)或源码安装 Celery。
用 pip 安装:
$ pip install -U Celery
用 easy_install 安装:
$ easy_install -U Celery
Celery 也定义了一组用于安装 Celery 和给定特性依赖的捆绑。
你可以在 requirements.txt 中指定或在 pip 命令中使用方括号。多个捆绑 用逗号分隔。
$ pip install celery[librabbitmq]
$ pip install celery[librabbitmq,redis,auth,msgpack]
以下是可用的捆绑:
celery[auth]: | 使用 auth 序列化。 |
---|---|
celery[msgpack]: | |
使用 msgpack 序列化。 | |
celery[yaml]: | 使用 yaml 序列化。 |
celery[eventlet]: | |
---|---|
使用 eventlet 池。 | |
celery[gevent]: | 使用 gevent 池。 |
celery[threads]: | |
使用线程池。 |
celery[librabbitmq]: | |
---|---|
使用 librabbitmq 的 C 库. | |
celery[redis]: | 使用 Redis 作为消息传输方式或结果后端。 |
celery[mongodb]: | |
使用 MongoDB 作为消息传输方式( 实验性 ),或是结果后端( 已支持 )。 | |
celery[sqs]: | 使用 Amazon SQS 作为消息传输方式( 实验性 )。 |
celery[memcache]: | |
使用 memcache 作为结果后端。 | |
celery[cassandra]: | |
使用 Apache Cassandra 作为结果后端。 | |
celery[couchdb]: | |
使用 CouchDB 作为消息传输方式( 实验性 )。 | |
celery[couchbase]: | |
使用 CouchBase 作为结果后端。 | |
celery[beanstalk]: | |
使用 Beanstalk 作为消息传输方式( 实验性 )。 | |
celery[zookeeper]: | |
使用 Zookeeper 作为消息传输方式。 | |
celery[zeromq]: | 使用 ZeroMQ 作为消息传输方式( 实验性 )。 |
celery[sqlalchemy]: | |
使用 SQLAlchemy 作为消息传输方式( 实验性 ),或作为结果后端( 已支持 )。 | |
celery[pyro]: | 使用 Pyro4 消息传输方式( 实验性 )。 |
celery[slmq]: | 使用 SoftLayer Message Queue 传输( 实验性 )。 |
从 http://pypi.python.org/pypi/celery/ 下载最新版本的 Celery。
你可以通过以下步骤安装:
$ tar xvfz celery-0.0.0.tar.gz
$ cd celery-0.0.0
$ python setup.py build
# python setup.py install
如果不是在 virtualenv 里安装,最后一条命令必须以管理员权限执行。
Celery 开发版本需要开发版本的 kombu 、 amqp 和 billiard 。
你可以用下面的 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
请见 Contributing 章节。