Celery-4.1 用户指南: Concurrency (并发)
2024-09-04 15:09:22
简介
Eventlet
的主页对它进行了描述;它是一个python的并发网络库,可以让你更改如何运行你的代码而不是怎么编写代码。
- 对高可扩展非阻塞IO操作,它使用 epoll或者libevent。
Coroutines
使得开发者使用一个类似于线程的阻塞式编程风格,但是却能提供非阻塞IO的好处。- 事件的分发是隐式的:意味着你可以很容易的从python解释器中使用Eventlet,或者作为一个大应用的一部分。
Celery 支持 Eventlet 作为一种可选的执行池实现。在有些情况下,它比 prefork 更优,但是你需要确保你的任务不会执行阻塞调用,因为这会阻塞工作单元中所有其他操作直到阻塞调用返回。
prefork 池能使用多个进程,但是通常每个CPU限制在少数几个进程。使用 Eventlet,你可以高效的开启成百上千个 green-thread。对一个消息源系统进行的一个非正式的测试显示 Eventlet 池可以每秒获取和处理数百个消息,而 prefork 池处理100个 消息源使用了14秒。注意这是异步IO优势明显的一个应用示例(异步http请求)。你可能想混合使用 Eventlet 和 prefork 工作单元,并且根据兼容性和哪个工作更佳来将任务路由到相应工作单元。
启用 Eventlet
你可以通过使用工作单元的 celery worker -P
选项启用 Eventlet 池:
$ celery -A proj worker -P eventlet -c 1000
示例
查看celery发布中的 Eventlet example
文件夹获取更多使用 Eventlet 的示例。
转自:https://blog.csdn.net/libing_thinking/article/details/78606278
最新文章
- 用.NET从外部dwg文件导入块
- ArcGIS JS 学习笔记2 实现仿百度的拖拽画圆
- JS(ajax笔记)
- 在MacOS和iOS系统中使用OpenCV
- jquery 的datatables插件问题
- js事件对象--DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象
- 【转】 Android——eclipse共享library以及导出jar包
- 011_hasCycle
- Spring(三)——AOP
- Android之后台服务判断本应用Activity是否处于栈顶
- tempnam问题
- Algorithm -->; 6174问题
- [经验共享] MapGIS实用小功能图解——由excel文件导成MapGIS点文件
- kettle删除移动文件
- java集合迭代器
- Idea设置行注释不显示在行首
- Python全栈之路----函数进阶----迭代器
- odoo 11 实现多个字段对应一个查询参数的查询
- Spark中的IsNotNull函数怎么用
- 在线js调试工具JSbin、jsFiddle