跳转到主要内容

分布式任务队列。

项目描述

https://docs.celeryq.dev/en/latest/_images/celery-banner-small.png

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

版本:

5.4.0 (opalescent)

网页:

https://docs.celeryq.dev/en/stable/index.html

下载:

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.js的node-celery、PHP客户端PHP客户端、Go的gocelery、Go的gopher-celery以及Rust的rusty-celery

通过使用webhooks,也可以通过客户端将URL入队给工作进程的方式实现语言互操作性。

我需要什么?

Celery版本5.3.5在以下环境中运行

  • Python (3.8, 3.9, 3.10, 3.11, 3.12)

  • PyPy3.9+ (v7.3.12+)

这是将支持Python 3.8或更新的Celery版本。

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

  • Python 3.7: Celery 5.2或更早版本。

  • Python 3.6: Celery 5.1或更早版本。

  • Python 2.7: Celery 4.x系列。

  • 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 v5.3.5的新用户,那么您应该阅读我们的入门教程

您还可以通过使用托管代理传输CloudAMQP来开始使用Celery。RabbitMQ的最大托管提供商是Celery的骄傲赞助商。

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

最新的中文文档托管在https://www.celerycn.io/上,包含用户指南、教程、API接口等。

安装

您可以通过Python包索引(PyPI)或从源代码安装Celery。

使用pip安装

$ pip install -U Celery

捆绑

Celery还定义了一组捆绑,可用于安装Celery和特定功能的依赖项。

您可以在您的需求中或通过使用方括号在pip命令行中指定这些捆绑。可以通过逗号分隔多个捆绑。

$ pip install "celery[redis]"

$ pip install "celery[redis,auth,msgpack]"

以下捆绑可用

序列化器

celery[auth]:

用于使用auth安全序列化程序。

celery[msgpack]:

用于使用msgpack序列化程序。

celery[yaml]:

用于使用yaml序列化程序。

并发

celery[eventlet]:

用于使用 eventlet 线程池。

celery[gevent]:

用于使用 gevent 线程池。

传输和后端

celery[amqp]:

用于使用 RabbitMQ amqp Python 库。

celery[redis]:

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

celery[sqs]:

用于使用 Amazon SQS 作为消息传输。

celery[tblib]:

用于使用 task_remote_tracebacks 功能。

celery[memcache]:

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

celery[pymemcache]:

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

celery[cassandra]:

用于使用 Apache Cassandra/Astra DB 作为结果后端,并使用 DataStax 驱动程序。

celery[azureblockblob]:

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

celery[s3]:

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

celery[gcs]:

用于使用 Google Cloud Storage 作为结果后端。

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 Message Queue 传输(实验性)。

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 开发版本还需要 kombu、amqp、billiard 和 vine 的开发版本。

您可以使用以下 pip 命令安装这些软件的最新快照

$ pip install https://github.com/celery/celery/zipball/main#egg=celery
$ pip install https://github.com/celery/billiard/zipball/main#egg=billiard
$ pip install https://github.com/celery/py-amqp/zipball/main#egg=amqp
$ pip install https://github.com/celery/kombu/zipball/main#egg=kombu
$ pip install https://github.com/celery/vine/zipball/main#egg=vine

使用 git

请参阅贡献部分。

获取帮助

邮件列表

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

IRC

在IRC上与我们聊天。 #celery 频道位于Libera Chat网络。

错误跟踪器

如果您有任何建议、错误报告或烦恼,请向我们的错误跟踪器报告,网址为https://github.com/celery/celery/issues/

Wiki

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

致谢

贡献者

本项目之所以存在,多亏了所有贡献者。 celery 的发展在GitHub上发生:https://github.com/celery/celery

强烈鼓励您参与 celery 的发展。如果您不喜欢GitHub(出于某种原因),欢迎您定期发送补丁。

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

oc-contributors

赞助商

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

oc-backers

赞助商

通过成为赞助商来支持此项目。您的徽标将出现在此处,并带有链接到您的网站。[成为赞助商]

oc-sponsor-1 Upstash

许可证

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

项目详情


发布历史 发布通知 | RSS源

下载文件

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

源分发

celery-5.4.0.tar.gz (1.6 MB 查看散列值)

上传时间

构建分发

celery-5.4.0-py3-none-any.whl (426.0 kB 查看散列值)

上传时间 Python 3

由以下支持