跳转到主要内容

分布式任务队列。

项目描述

http://docs.celeryproject.org/en/latest/_images/celery-banner-small.png

Build status BSD License Celery can be installed via wheel Supported Python versions. Support Python implementations.

版本:

4.0.2 (latentcall)

Web:

http://celeryproject.org/

下载:

http://pypi.python.org/pypi/celery/

源码:

https://github.com/celery/celery/

关键词:

任务, 队列, 工作, 异步, rabbitmq, amqp, redis, python, 分布式, 演员

什么是任务队列?

任务队列被用作在线程或机器之间分配工作的机制。

任务队列的输入是一个工作单元,称为任务,专用工作进程随后会持续监控队列以获取新的工作。

Celery通过消息进行通信,通常使用代理在客户端和工作者之间进行调解。要启动一个任务,客户端将一条消息放入队列,代理随后将消息传递给工作者。

Celery系统可以由多个工作者和代理组成,从而实现高可用性和水平扩展。

Celery是用Python编写的,但协议可以用任何语言实现。除了Python之外,还有node-celery用于Node.js,以及一个PHP客户端

语言互操作性也可以通过以这种方式使用webhooks来实现,即客户端将一个URL入队以供工作者请求。

我需要什么?

Celery版本4.0运行在:

  • Python(2.7、3.4、3.5)

  • PyPy(5.4、5.5)

这是支持Python 2.7的最后一个版本,从下一个版本(Celery 5.x)开始需要Python 3.5或更高版本。

如果你正在运行较旧的Python版本,你需要运行较旧的Celery版本

  • 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可以在单台机器上运行,在多台机器上运行,甚至可以跨越数据中心。

开始使用

如果你是第一次尝试使用Celery,或者你是从之前的版本转换到Celery 4.0的新用户,那么你应该阅读我们的入门教程

Celery是…

  • 简单

    Celery易于使用和维护,不需要配置文件

    它有一个活跃、友好的社区,你可以寻求支持,例如在我们的邮件列表或IRC频道。

    这是你可以制作的简单应用程序之一

    from celery import Celery
    
    app = Celery('hello', broker='amqp://guest@localhost//')
    
    @app.task
    def hello():
        return 'hello world'
  • 高可用性

    在工作或客户端在连接丢失或失败的情况下,将自动重试,并且某些代理支持通过主/主主/副本复制实现高可用性。

  • 快速

    单个Celery进程每分钟可以处理数百万个任务,具有亚毫秒往返延迟(使用RabbitMQ、py-librabbitmq和优化设置)。

  • 灵活

    几乎可以扩展或独立使用Celery的每个部分,自定义池实现、序列化器、压缩方案、日志记录、调度器、消费者、生产者、代理传输等等。

它支持…

  • 消息传输

  • 并发

  • 结果存储

    • AMQP、Redis

    • memcached

    • SQLAlchemy、Django ORM

    • Apache Cassandra、IronCache、Elasticsearch

  • 序列化

    • picklejsonyamlmsgpack

    • zlibbzip2压缩。

    • 加密消息签名。

框架集成

Celery易于与Web框架集成,其中一些甚至有集成软件包

Django

不需要

Pyramid

pyramid_celery

Pylons

celery-pylons

Flask

不需要

web2py

web2py-celery

Tornado

tornado-celery

集成软件包不是必需的,但它们可以使开发更容易,有时它们还添加了重要钩子,如在fork时关闭数据库连接。

文档

最新的文档托管在Read The Docs上,包含用户指南、教程和API参考。

安装

您可以通过Python包索引(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[eventlet]:

用于使用 eventlet 池。

celery[gevent]:

用于使用 gevent 池。

传输和后端

celery[librabbitmq]:

用于使用 librabbitmq C 库。

celery[redis]:

用于使用 Redis 作为消息传输或结果后端。

celery[sqs]:

用于使用 Amazon SQS 作为消息传输(实验性)。

:celery[tblib]

用于使用 task_remote_tracebacks 功能。

celery[memcache]:

用于使用 Memcached 作为结果后端(使用 pylibmc

celery[pymemcache]:

用于使用 Memcached 作为结果后端(纯 Python 实现)。

celery[cassandra]:

用于使用 Apache Cassandra 作为结果后端与 DataStax 驱动程序。

celery[couchbase]:

用于使用 Couchbase 作为结果后端。

celery[elasticsearch]:

用于使用 Elasticsearch 作为结果后端。

celery[riak]:

用于使用 Riak 作为结果后端。

celery[zookeeper]:

用于使用 Zookeeper 作为消息传输。

celery[sqlalchemy]:

用于使用 SQLAlchemy 作为结果后端(支持)。

celery[pyro]:

用于使用 Pyro4 消息传输(实验性)。

celery[slmq]:

用于使用 SoftLayer 消息队列传输(实验性)。

celery[consul]:

用于使用 Consul.io 键/值存储作为消息传输或结果后端(实验性)。

:celery[django]

指定 Django 支持的最低版本。

您可能不应该在需求中使用它,这里只供信息参考。

从源代码下载和安装

从 PyPI 下载 Celery 的最新版本

http://pypi.python.org/pypi/celery/

您可以通过以下操作进行安装,

$ tar xvfz celery-0.0.0.tar.gz
$ cd celery-0.0.0
$ python setup.py build
# python setup.py install

如果当前没有使用虚拟环境,则必须以权限用户身份执行最后一个命令。

使用开发版本

使用 pip

Celery 的开发版本还需要 kombuamqpbilliardvine 的开发版本。

您可以使用以下 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

使用 git

请参阅贡献部分。

获取帮助

邮件列表

有关 Celery 的使用、开发和未来的讨论,请加入 celery-users 邮件列表。

IRC

加入我们与我们在IRC聊天。 #celery频道位于Freenode网络。

错误追踪器

如果您有任何建议、错误报告或烦恼,请将它们报告给我们的错误追踪器https://github.com/celery/celery/issues/

维基

http://wiki.github.com/celery/celery/

贡献

celery的开发发生在GitHub上:https://github.com/celery/celery

强烈鼓励您参与celery的开发。如果您不喜欢GitHub(出于某种原因),您也可以发送常规补丁。

请务必阅读文档中的为Celery做出贡献部分。

许可证

本软件采用New BSD License授权。有关完整的授权文本,请参阅顶级发行目录中的LICENSE文件。

项目详情


下载文件

下载适用于您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

ckuehl-celery-4.0.2.post1.tar.gz (1.4 MB 查看哈希)

上传时间:

构建分布

ckuehl_celery-4.0.2.post1-py2.py3-none-any.whl (399.7 kB 查看哈希)

上传时间: Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面