Python中的消息队列工具
责任编辑:一颗赛艇     时间:2021-03-24     来源:原创
责任编辑:一颗赛艇
时间:2021-03-24  来源:原创
分类: 开发资源
浏览量: 655

场景

  • 未使用消息队列工具时
用户发请求--->服务端接受处理--->服务端处理(花很长时间)--->用户收到结果

当服务端处理需要消耗比较长的时间且大量消耗CPU资源时,客户端与服务端的连接需要一直保持,同时,当大量的请求涌入时,可能会造成拥堵或者资源耗尽,此时则需要对客户端提交的请求进行有序的处理,引入消息队列工具。

  • 使用消息队列工具后
用户发请求--->服务端接受请求--->服务端把要处理的函数以及参数交给task queue,并返回task_id (很快)--->用户收到task_id(请求已受理,但是还未完成,用户可用task_id对请求的状态进行查询)

用户发多少请求用户说了算,但是具体什么时间真正处理这个请求里的操作服务端说了算。消息队列工具比较适用于比较慢(不管是慢在 I/O 还是慢在 CPU )的操作,这种操作用户并不急着要结果,但是他在乎的是服务端收到这个请求,并且会在一定时间后完成这个操作。

Python中的常用消息队列工具

  • Celery
Celery是一个简单,灵活且可靠的分布式系统,可以处理大量消息,同时为操作提供维护该系统所需的工具。是一个任务队列,着重于实时处理,同时还支持任务调度。

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

Stars: 16.9k

  • RQ (Redis Queue)
RQ(Redis Queue)是一个简单的Python库,用于对作业进行排队并与工作人员在后台进行处理。它具有Redis的支持,并且设计为具有较低的进入门槛。它可以轻松地集成到您的Web堆栈中。

GitHub: https://github.com/rq/rq

Stars: 7.6k

  • huey
hury是一个任务队列工具,具有简洁的API,支持Redis,SQLite以及内存内存储。

GitHub: https://github.com/coleifer/huey

Stars: 3.4k

  • Dramatiq
Dramatiq是Python的后台任务处理库,其重点是简单性,可靠性和性能。

GitHub: https://github.com/Bogdanp/dramatiq

Stars: 2.5k

  • Dask
Dask是用于Python中并行计算的灵活库。其包含两部分,一是动态任务调度,这类似于 Airflow,Luigi,Celery或Make,但针对交互式计算工作负载进行了优化。二是“大数据”集合(如并行数组,数据框和列表),将诸如NumPy,Pandas或Python迭代器之类的通用接口扩展到内存或分布式环境。这些并行集合在动态任务计划程序之上运行。

GitHub: https://github.com/dask/dask

Stars: 8.1k


参考


来源:原创

哆啦俊俊2  回复 2021-06-28 13:00:55
好厉害
sky  回复 2021-06-27 15:13:41
学到了
废话输出机  回复 2021-06-01 18:56:43
好厉害
绿豆鲨  回复 2021-05-29 16:21:44
学到了
哆啦俊俊  回复 2021-05-19 13:05:10
有帮助
回复:

Copyright © 2021 .长沙麦涛网络科技有限公司 All rights reserved. 湘ICP备20015126号-2
联系我们