关于队列
来源:7-17 工程view视图层代码逻辑实现及自动化接口执行演示
qq_盲区行者_0
2018-04-10
老师celery redis queue channels您更推荐哪个用作队列?
2回答
-
你好,这个问题其实挺大的。
如果在实现异步任务的场景上,在需要用到消息队列的模式,主要取决于你具体的场景和系统规模决定,我推荐如下几种选择:
1、开发能力足够、底层支持需要更灵活:大型企业会自己开发整套系统
2、自动化系统规模偏大、场景丰富,推荐selery+rabbitMQ
3、稍微轻量级实现:推荐redis、RabbitMQ +python模块CURD化封装。
4、最轻量级:推荐使用queue。
Channels主要还是在网络层的请求通信上,并不适合在这套系统任务中完全承担消息队列,可以结合来作一些小的事件响应任务之类的功能。
我再给你介绍下他们区别:
1、Redis VS Rabbit MQ
两者都可以作为消息队列,就是一款队列任务存储的单独服务。总的来说Rabbit MQ相对Redis在易用性、扩展性、高可用性等更加优秀。而redis则适合更加轻量化的应用。
Redis:轻量级,高并发,延迟敏感
即时数据分析、秒杀计数器、缓存等RabbitMQ:重量级,高并发,异步
批量数据异步处理、并行任务串行化,高负载任务的负载均衡等2、Celery是一套实时任务处理的队列管理系统,同时支持任务调度。
3、关于Channels
Channels是django的一款插件,它出现可以让 Django 不仅可以处理纯 HTTP 请求,包括 HTTP2 和WebSockets,也有能力在请求发送到缩略图或后台运算时也能运行运行代码。
Channels运用在面向http请求事件响应方面。如:聊天室应用、消息推送场景等。
4、queue
Queue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生产者和消费者线程之间的信息传递. 基本FIFO队列.
它就是一个款简单的python下的FIFO队列,更加适合一些非常轻量场景,或者说单机脚本多线程消息传递使用。
10 -
qq_盲区行者_0
提问者
2018-04-10
好像还有channels,这个您怎么看
00
相似问题