标签归档:sqs-queue

Celery-分布式任务队列(开发分支)

版本: 5.1.2(太阳谐波)
网站: https://docs.celeryproject.org/en/stable/index.html
下载: https://pypi.org/project/celery/
来源: https://github.com/celery/celery/
关键词: 任务、队列、作业、异步、rabbitmq、amqp、redis、python、分布式、参与者

捐款

这项工程有赖于你的慷慨捐助。

如果您正在使用celery创建商业产品,请考虑成为我们的backer或者我们的sponsor确保celery的未来

对于企业而言

作为Tidelift订阅的一部分提供

的维护人员celery数以千计的其他软件包正在与Tidelift合作,为您用来构建应用程序的开源依赖项提供商业支持和维护。节省时间、降低风险并提高代码的健全性,同时付钱给您使用的确切依赖项的维护人员。Learn more.

什么是任务队列?

任务队列用作跨线程或计算机分配工作的机制

任务队列的输入是一个工作单元,称为任务,专用的工作进程然后不断地监视队列以查找要执行的新工作

celery通过消息进行通信,通常使用经纪人在客户和工人之间进行调解。为了启动任务,客户端将消息放到队列中,然后代理将消息传递给工作器

celery系统可以由多个工作进程和代理组成,为高可用性和水平扩展让路。

celery是用Python编写的,但是协议可以用任何语言实现。除了Python,还有node-celery对于Node.js,一个PHP clientgocelery对于戈朗,还有rusty-celery对于生锈

语言互操作性也可以通过使用WebHook来实现,其方式是客户端将工作人员请求的URL入队

我需要什么?

celery5.1.2版运行在

  • Python(3.6、3.7、3.8、3.9)
  • Pypy3.6(7.6)

这是下一版本的celery,将支持Python 3.6或更高版本

如果您运行的是较旧版本的Python,则需要运行较旧版本的celery:

  • Python 2.6:celery系列3.1或更早版本
  • Python 2.5:celery系列3.0或更早版本
  • Python 2.4:celery系列2.2或更早版本
  • Python 2.7:celery4.x系列

celery是一个资金最少的项目,所以我们不支持Microsoft Windows。请不要打开任何与该平台相关的问题

celery通常与message broker一起使用来发送和接收消息。RabbitMQ、Redis传输功能齐全,但也有对无数其他解决方案的实验支持,包括使用SQLite进行本地开发

celery可以在单台计算机、多台计算机甚至跨数据中心运行

开始使用

如果这是您第一次尝试使用celery,或者您是以前版本的celery5.0.5或5.1.2的新手,那么您应该阅读我们的入门教程:

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

celery是

  • 简单

    celery很容易使用和维护,而且确实不需要配置文件

    它有一个活跃、友好的社区,您可以与之交谈以寻求支持,例如在我们的mailing-list,或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
    • SQL炼金术,Django ORM
    • Apache Cassandra、IronCache、Elasticsearch
  • 序列化
    • 泡菜JSONYAML消息包
    • zlibbzip2压缩
    • 加密消息签名

框架集成

celery很容易与web框架集成,其中一些框架甚至有集成包:

Django 不需要
Pyramid pyramid_celery
Pylons celery-pylons
Flask 不需要
web2py web2py-celery
Tornado tornado-celery

集成包并不是严格必需的,但是它们可以简化开发,有时它们还会添加重要的挂钩,比如在以下位置关闭数据库连接fork

文档

这个latest documentation托管在Read the Docs上,包含用户指南、教程和API参考

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

安装

您可以通过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 Storage作为结果后端(使用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.org/project/celery/

您可以通过执行以下操作来安装它:

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

如果您当前未使用虚拟环境,则必须以特权用户身份执行最后一个命令

使用开发版本

带管道

celery开发版本还需要kombuamqpbilliard,以及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

使用GIT

请参阅投稿部分

获取帮助

邮件列表

有关celery的用途、发展和未来的讨论,请加入celery-users邮件列表

IRC

来和我们在IRC上聊天吧。这个#celery频道位于Freenode网络

漏洞跟踪器

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

维基

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

学分

贡献者

这个项目的存在要归功于所有做出贡献的人。celery的开发发生在GitHub:https://github.com/celery/celery

我们非常鼓励您参与celery的开发。如果您不喜欢GitHub(出于某种原因),欢迎您发送常规补丁

请务必同时阅读Contributing to Celery部分,请参阅文档中的

支持者

感谢我们所有的支持者!🙏[Become a backer]

赞助商

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


许可证

此软件在新的BSD许可证下获得许可。请参阅LICENSE完整许可证文本的顶级分发目录中的文件