前情: 最近使用了asyncio这个库,了解到异步通信的高性能,然后发现了aiohttp / asyncio / flask / django / celery这一段文字,我就想学习一把这些都是啥呀?
当前粗浅暂时学习总结 :
目录
web框架 :flask / django, 还想要分布式任务执行框架支持大量任务的并发执行celery,还想要异步高性能asyncio,还想要Python异步下载文件aiohttp。
1 Python3web框架
1.1 Django、Tornado、Flask
我从这个大神那学习到:https://blog.csdn.net/ingenuou_/article/details/104364761
1.1.1 Django
应用范围
- 适合做企业级网站的开发。
- 主要是用来搞快速开发的,可以专注于编写应用程序。
优点
- 免费和开放源码。
- 大而全,集成了很多组件,属于全能型框架。包含许多额外功能,开箱即用
- 自带的sqlite数据库和开发测试用的服务器
- 相对于Flask,Django的整体封闭性比较好
缺点
- template不怎么好用
- 数据库用nosql不方便
- 如果要实现高并发的话,就要对django进行二次开发
1.1.2 Tornado
应用范围
- IO密集型应用和多任务处理
优点
- 原生异步非阻塞,性能优越,速度快
- websockets 长连接
- 内嵌了HTTP服务器
- 单线程的异步网络程序,默认启动时根据CPU数量运行多个实例
缺点
- 模板和数据库部分有很多第三方的模块可供选择,这样不利于封装为一个功能模块
1.1.3 Flask
应用范围
- 适用于做小网站以及web服务的API
- 主要是用来写接口的一个框架,实现前后端分离,提考开发效率
优点
- 轻量级的框架,自由,灵活,可扩展性强
- 与关系、非关系型数据库的结合不弱于Django
- Flask 可以自由选择自己的数据库交互组件(通常是 Flask-SQLAlchemy),而且加上 celery +redis 等异步特性以后
2 (关键在于)阻塞方式
- 同步 : 使用celery /apscheduler处理异步任务 :django 、flask
- 异步 :tornado
3. Flask-web框架 想要异步提升性能
3.1 celery
- 分布式任务执行框架celery,支持大量任务的并发执行
- 由以下三部分构成:消息中间件(Broker)、任务执行单元Worker、结果存储(Backend)
我从这个里学习:https://mp.weixin.qq.com/s?__biz=MzAxMjUyNDQ5OA==&mid=2653562766&idx=1&sn=86bd7e0a834722d7554c4a1341162a69&chksm=806e0933b7198025fd60ec95973ea187450ce6a8399f4891aad13fec951b24106cf95a85e21c&scene=27
3.2 redis
- 使用redis作为消息队列即Broker
3.3 asyncio
- Python 中使用 asyncio 标准库实现协程
我从这个里学习:https://www.jianshu.com/p/de07a418a723
3.4 aiohttp
- 要使用Python异步下载文件,您可以使用aiohttp库
我从这个里学习:https://blog.csdn.net/lilongsy/article/details/129713657