跳转到主要内容

分布式任务队列。

项目描述

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

Build status coverage BSD License Celery can be installed via wheel Supported Python versions. Support Python implementations. Backers on Open Collective Sponsors on Open Collective

版本::

4.4.7 (cliffs)

网站::

http://celeryproject.org/

下载::

https://pypi.ac.cn/project/celery/

源代码::

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

关键词::

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

捐赠

本项目依赖于您慷慨的捐赠。

如果您正在使用Celery创建商业产品,请考虑成为我们的支持者或我们的赞助者,以确保Celery的未来。

对于企业

作为Tidelift订阅的一部分提供。

Celery和其他数千个包的维护者正在与Tidelift合作,为您构建应用程序使用的开源依赖项提供商业支持和维护。节省时间,降低风险,并提高代码质量,同时支付您使用的确切依赖项的维护者。了解更多信息。

什么是任务队列?

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

任务队列的输入是一个工作单元,称为任务,专门的工作进程随后将不断监视队列以查找新工作。

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

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

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

通过使用webhook以这种方式实现语言互操作性,客户端将URL入队以由工作者请求。

我需要什么?

Celery版本4.4.0在以下版本上运行:

  • Python (2.7, 3.5, 3.6, 3.7, 3.8)

  • PyPy2.7 (7.2)

  • PyPy3.5 (7.1)

  • PyPy3.6 (7.6)

4.x.x是最后一个支持Python 2.7的版本,下一个主要版本(Celery 5.x)需要Python 3.6或更高版本。

如果您正在运行较旧的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.4,那么您应该阅读我们的入门教程

Celery是…

  • 简单

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

    它有一个活跃、友好的社区您可以与之交流以获得支持,例如在我们的邮件列表或IRC频道。

    以下是您可以创建的最简单的应用程序之一

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

    在工作器或客户端连接丢失或失败的情况下,将自动重试,并且一些代理支持以主/主主/副本复制的方式支持HA。

  • 快速

    单个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参考。

最新的中文文档托管在https://www.celerycn.io/,包含用户指南、教程、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[azureblockblob]:

用于使用Azure存储作为结果后端(使用azure-storage

celery[s3]:

用于使用S3存储作为结果后端。

celery[couchbase]:

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

celery[arangodb]:

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

celery[elasticsearch]:

用于将Elasticsearch用作结果后端。

celery[riak]:

用于将Riak用作结果后端。

celery[cosmosdbsql]:

用于将Azure Cosmos DB用作结果后端(使用 pydocumentdb

celery[zookeeper]:

用于将Zookeeper用作消息传输。

celery[sqlalchemy]:

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

celery[pyro]:

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

celery[slmq]:

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

celery[consul]:

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

celery[django]:

指定支持Django所需的最小版本。

您可能不需要在需求中使用此版本,此处仅作信息参考。

从源码下载和安装

从PyPI下载Celery的最新版本

https://pypi.ac.cn/project/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 网络中。

错误跟踪器

如果您有任何建议、错误报告或烦恼,请将它们报告给我们的问题跟踪器

Wiki

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

致谢

贡献者

该项目得以存在,感谢所有贡献者。 celery 的发展在GitHub上进行:https://github.com/celery/celery

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

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

oc-contributors

赞助商

感谢所有赞助商! 🙏 [成为赞助商]

oc-backers

赞助商

通过成为赞助商来支持此项目。您的标志将显示在此处,并带有指向您网站的链接。[成为赞助商]

oc-sponsors

许可协议

此软件根据 新BSD许可 许可。请参阅顶级分发目录中的 LICENSE 文件以获取完整的许可文本。

项目详情


下载文件

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

源代码分发

celery-joinup-4.4.7.2.tar.gz (1.5 MB 查看哈希值)

上传时间 源代码

构建分发

celery_joinup-4.4.7.2-py2.py3-none-any.whl (427.8 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持