celery介绍

news/2024/7/3 2:10:25

celery介绍

特点:

  • 简单

Celery 上手比较简单,不需要配置文件就可以直接运行。

  • 高可用

如果出现丢失连接或连接失败,职程(Worker)和客户端会自动重试,并且中间人通过 主/主 主/从 的方式来进行提高可用性。

  • 快速

单个 Celery 进行每分钟可以处理数以百万的任务,而且延迟仅为亚毫秒(使用 RabbitMQ、 librabbitmq 在优化过后)。

  • 灵活

Celery 的每个部分几乎都可以自定义扩展和单独使用,例如自定义连接池、序列化方式、压缩方式、日志记录方式、任务调度、生产者、消费者、中间人(Broker)等。

 

它支持

  • 中间人

    • RabbitMQ

    • Redis

    • Amazon SQS

  • 结果存储

    • AMQP、 Redis

    • Memcached

    • SQLAlchemy、Django ORM

    • Apache Cassandra, Elasticsearch, Riak

    • MongoDB, CouchDB, Couchbase, ArangoDB

    • Amazon DynamoDB, Amazon S3

    • Microsoft Azure Block Blob, Microsoft Azure Cosmos DB

    • File system

  • 并发

    • prefork (multiprocessing)

    • Eventlet、gevent

    • thread (multithreaded)

    • solo (single threaded)

  • 序列化

    • pickle、json、yaml、msgpack

    • zlib、bzip2 compression

    • Cryptographic message signing

 

功能

  • 监控

可以针对整个流程进行监控,内置的工具或可以实时说明当前集群的概况。

  • 调度

可以通过调度功能在一段时间内指定任务的执行时间 datetime,也可以根据简单每隔一段时间进行执行重复的任务,支持分钟、小时、星期几,也支持某一天或某一年的Crontab表达式。

  • 工作流

可以通过“canvas“进行组成工作流,其中包含分组、链接、分块等等。

简单和复杂的工作流程可以使用一组“canvas“组成,其中包含分组、链接、分块等。

  • 资源(内存)泄漏保护

--max-tasks-per-child 参数适用于可能会出现资源泄漏(例如:内存泄漏)的任务。

  • 时间和速率的限制

您可以控制每秒/分钟/小时执行任务的次数,或者任务执行的最长时间,也将这些设置为默认值,针对特定的任务或程序进行定制化配置。

  • 自定义组件

开发者可以定制化每一个职程(Worker)以及额外的组件。职程(Worker)是用 “bootsteps” 构建的-一个依赖关系图,可以对职程(Worker)的内部进行细粒度控制。

 

框架集成

Celery可以快速的集成一些常用的Web框架,详细如下:

Web框架

集成包

Pyramid

pyramid_celery

Pylons

celery-pylons

Flask

不需要

web2py

web2py-celery

Tornado

tornado-celery

Tryton

celery_tryton

针对 Django ,请参考 Django 的初次使用。

集成包并不是必须安全的,但使用它们可以更加快速和方便的开发,有时它们会在 fork(2) 中添加例如数据库关闭连接的回调。

 

 

安装

您可以通过 python 的 pip 安装或通过源代码进行安装 Celery 。

使用pip进行安装

pip install -U Celery

 

捆绑

Celery 自定义了一组用于安装 Celery 和特定功能的依赖。

您可以在中括号加入您需要依赖,并可以通过逗号分割需要安装的多个依赖包。

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

目前发行的依赖包如下:

序列化

  • celery[auth]:使用auth保证程序的安全

  • celery[msgpack]:使用msgpack序列化

  • celery[yaml]:使用yaml序列化

并发

  • celery[eventlet]:基于 eventle 的并发池

  • celery[gevent]:基于 gevent 的并发池

传输和后端

  • celery[librabbitmq]:使用librabbitmq库

  • celery[redis]:使用Redis进行消息传输或后端结果存储

  • celery[sqs]:使用Amazon SQS进行消息传输(实验阶段)

  • celery[tblib]:使用 task_remote_tracebacks 的功能

  • celery[memcache]:使用Memcached作为后端结果存储(使用的是pylibmc)

  • celery[pymemcache]:使用Memcached作为后端结果存储(纯Python实现)

  • celery[cassandra]:使用Apache Cassandra作为后端结果存储

  • celery[couchbase]:使用CouchBase作为后端结果存储

  • celery[arangodb]:使用ArangoDB作为后端结果存储

  • celery[elasticsearch]:使用ElasticSearch作为后端结果存储

  • celery[riak]:使用Riak作为后端结果存储

  • celery[dynamodb]:使用AWS DynamoDB作为后端结果存储

  • celery[zookeeper]:使用Zookeeper进行消息传输

  • celery[sqlalchemy]:使用SQLlchemy作为后端结果存储(支持)

  • celery[pyro]:使用Pyro4进行消息传输(实验阶段)

  • celery[slmq]:使用 SoftLayer Message Queue进行消息传输(实验阶段)

  • celery[consul]:使用Consul.io Key/Value进行存储传输消息或后端结果存储(实验阶段)

  • celery[django]:支持比较低的Django版本,不建议您在项目中使用它,它仅供参考

使用开发版本

pip

使用 Celery 的开发版本需要开发版本的 kombu、amqp、billiard 和 vine。

您可以通过 pip 来进行安装:

pip install https://github.com/celery/celery/zipball/master#egg=celerypip install https://github.com/celery/billiard/zipball/master#egg=billiardpip install https://github.com/celery/py-amqp/zipball/master#egg=amqppip install https://github.com/celery/kombu/zipball/master#egg=kombupip install https://github.com/celery/vine/zipball/master#egg=vine

 

 

 

 

 

 


http://lihuaxi.xjx100.cn/news/269507.html

相关文章

为了毕业,我花了1800元给原创论文查重

点击上方“视学算法”,选择加"星标"或“置顶”重磅干货,第一时间送达金磊 萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI一年一度的毕业论文查重“盛宴”,又开始了。然而,隔着屏幕都能感受到毕业生们的痛苦&#xff1a…

程序员眼中的英文单词是这样的

来源:Jackie Han英语中一个单词可能有很多不同的意思。很多中国开发者外语本来就不好,概念是往往先入为主。甚至在不清楚一般意义的情况下,先记住了特定环境中的意思。 转载于:https://www.cnblogs.com/agileai/p/5166982.html

认识HTML5的WebSocket 认识HTML5的WebSocket

2019独角兽企业重金招聘Python工程师标准>>> 在HTML5规范中,我最喜欢的Web技术就是正迅速变得流行的WebSocket API。WebSocket提供了一个受欢迎的技术,以替代我们过去几年一直在用的Ajax技术。这个新的API提供了一个方法,从客户端…

html左浮动不管用图片往下放,html - 如何在HTML / CSS中水平对齐图像(浮动和显示内联块不起作用) - 堆栈内存溢出...

我有一个水平排列的图像库,但是后来我做到了,以便当您将鼠标悬停在图像上时,图像上会覆盖文字,现在我以前没有什么东西可以用来使它们水平排列。 我尝试在所有选择器上使用左浮点数(同样使用display inline-block),但是…

超越英伟达的,不会是另一款GPU?这家深圳公司发布全球首款数据流AI芯片

2020年6月23日,鲲云科技在深圳举行产品发布会,发布全球首款数据流AI芯片CAISA,定位于高性能AI推理,已完成量产。鲲云通过自主研发的数据流技术在芯片实测算力上实现了技术突破,较同类产品在芯片利用率上提升了最高11.6…

Mysql 查看连接数,状态 最大并发数 怎么设置才合理

show status like %max_connections%; ##mysql最大连接数 set global max_connections1000 ##重新设置 show variables like %max_connections%; ##查询数据库当前设置的最大连接数 show global status like Max_used_connections; ##服务器响应的最大连接数 show status like …

多光谱和高光谱图像有什么区别?

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达当你阅读这篇文章时,你的眼睛会看到反射的能量。但计算机可以通过三个通道看到它:红色、绿色和蓝色。如果你是一条金鱼,你会看到不同的…

celery中间件:broker

celery中间件:broker Celery 支持多种消息传输的方式。 中间人(Broker)使用指南 使用 RabbitMQ 使用 Redis 使用 Amazon SQS 中间人(Broker)概况 这是不同的中间件比对情况,更多的信息可以在每个中间件的…