aiohttp / asyncio / flask / django / celery之间的关系

前情: 最近使用了asyncio这个库,了解到异步通信的高性能,然后发现了aiohttp / asyncio / flask / django / celery这一段文字,我就想学习一把这些都是啥呀?

当前粗浅暂时学习总结

目录

1 Python3web框架

1.1 Django、Tornado、Flask

1.1.1 Django

1.1.2 Tornado

1.1.3 Flask

2 (关键在于)阻塞方式

3. Flask-web框架 想要异步提升性能

3.1 celery

3.2 redis

3.3 asyncio 

3.4 aiohttp


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

aiohttp / asyncio / flask / django / celery之间的关系_第1张图片

 

你可能感兴趣的:(python,python,web,异步)