文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

(一)Flask简介和快速使用

2023-08-31 17:31

关注

关于Python三大Web框架浅谈一嘴:

Django、Flask和Tornado三个框架都是Python Web应用的开发框架,虽然它们都能够开发Web应用,但在使用方式、适用领域和处理方式上还是有很多不同的。

  1. Django——专栏地址:《Django框架从入门到实战》
    Django是一个高层次(大而全)的Python Web框架,它采用了MVC模式,集成了ORM框架、自带的后台管理系统和认证框架,提供了丰富的应用程序接口(API),如:中间件、Form、session、缓存、信号、CSRF等。可以快速开发出功能齐全的Web应用程序,非常适合用于大规模的Web应用开发。

    优势:

    • 内置了ORM框架,能够快速、方便地实现数据操作,统一维护数据库连接。
    • 拥有完善的后台管理系统,减少了开发人员的工作量,使开发变得更加高效。
    • 在开发过程中,Django使用了丰富的模块,如模板引擎、表单系统和URL响应框架等,能够快速创建高性能的Web应用程序。

    劣势:

    • Django是一个比较重量级的框架,对服务器资源和数据存储要求较高,适合处理大规模数据和高负载应用场景,但对小型应用程序来说则显得过于臃肿。

    • Django需要较长的学习时间,需要熟悉其体系结构,以及如何使用其模块进行开发和部署。


  1. Flask——专栏地址:《Flask框架从入门到实战》
    Flask是一个短小精悍、可扩展强、第三方组件非常丰富的轻量级的Python Web框架,它基于Werkzeug、Jinja2模板引擎和WSGI工具箱开发,相比Django更加灵活,功能和体积都较小,适用于中小型Web应用开发。

    优势:

    • Flask是一个轻量级的框架,模块化、灵活,具有强大的定制性,能够快速、简便地实现Web应用程序。
    • Flask提供了丰富的扩展库,如Flask-Login、Flask-RESTful等,能够进一步降低开发难度。

    劣势:

    • Flask缺乏官方后台管理系统,需要开发者自己搭建后台管理模块。
    • Flask的模块比较分散,整体的学习成本较高,需要对相关模块进行一个一个学习和整合。

  1. Tornado——专栏地址:《tornado框架从入门到实战》
    Tornado是一个短小精悍、异步非阻塞的Python Web框架,基于异步IO操作和协程实现数据同步,内部使用的是异步网络库(tornado.ioloop)和协程库(tornado.gen),能够高效处理高并发和大流量的Web服务。

    优势:

    • Tornado基于协程和异步IO实现,代码简洁、高效,能够支持大量的并发连接,支持高效的异步编程。
    • Tornado的性能表现非常优越,比其他同类框架具有更快的响应速度和更高的并发性。

    劣势:

    • Tornado缺乏一些常见的组件,如ORM、表单处理等,开发者需要自己引入第三方组件。
    • Tornado因为使用异步IO技术,在开发过程中会出现回调地狱(Callback hell)的问题,需要开发者具有较高的编程能力。

总结:

三大Web框架各自的适用场景:


值得一提的是,当1000个请求同时到来时,这三个框架在处理上各有不同(可能就是你的技术面一道题哦~):

  1. Django的处理方式: Django是一个基于WSGI协议(wsgiref)的Web框架,由于它是同步阻塞的架构,每个请求的处理必须等待前一个请求的处理完成后才能开始。因此,当有大量请求同时到来时,Django会发生阻塞,导致请求超时或响应延迟等问题。

  2. Flask的处理方式: Flask同样是一个基于WSGI协议(werkzeug)的Web框架,但是它采用的是基于线程的架构,即每个请求会在单独的线程中处理。因此,当有大量请求同时到来时,Flask可以利用多线程来处理请求,但由于线程上下文切换成本,也存在性能和效率上的问题。

  3. Tornado的处理方式: Tornado是一个异步非阻塞的Web框架,采用单线程Reactor模型,通过事件循环机制处理请求。当有大量请求同时到来时,Tornado可以快速的将请求放到消息队列中,并且在请求的数据处理阶段和IO传输阶段均是异步的,因此不会造成阻塞和等待。在性能和并发上表现的非常优异。

因此,一千个请求同时到来时,Django和Flask处理速度可能会变慢,出现阻塞或线程饱和等问题,而Tornado凭借其异步非阻塞的方式,可以更好地处理并发请求,提高性能和吞吐量。使用Tornado可以更好的满足高并发的网站需求,在一些对性能有严格要求的场景下表现非常突出。

引子:werkzeug实现hello world

Flask就是在下面这段代码之上进行开发的一个web系统【下面会走进Flask源码看到类似的代码】。

from werkzeug.wrappers import Request, Responsefrom werkzeug.serving import run_simple@Request.applicationdef hello(request):    return Response('hello world')if __name__ == '__main__':    # 请求一旦进来,执行第三个参数加括号    run_simple('localhost', 4000, hello)   # hello(xxx)

在这里插入图片描述

主角:Flask实现hello world

from flask import Flaskapp = Flask(__name__)   # 一个Flask类对象@app.route('/')def index():    return 'hello world'if __name__ == '__main__':    app.run()  # run_simple(host, port, app)

可以查看一下Flask源码【进入app.run()的run方法里】,来证实Flask是基于werkzeug开发的。
在这里插入图片描述

拓展:Flask常用的三方组件官方文档

以下是常用的Flask第三方组件的官方文档链接:

  1. Flask-RESTful:https://flask-restful.readthedocs.io/en/latest/
  2. Flask-SQLAlchemy:https://flask-sqlalchemy.palletsprojects.com/
  3. Flask-Login:https://flask-login.readthedocs.io/en/latest/
  4. Flask-WTF:https://flask-wtf.readthedocs.io/en/stable/
  5. Flask-Mail:https://pythonhosted.org/Flask-Mail/
  6. Flask-Admin:https://flask-admin.readthedocs.io/en/latest/
  7. Flask-Cache:https://pythonhosted.org/Flask-Cache/

这些文档不仅包含了这些插件的使用说明,还提供了官方的API文档、示例和用法,可以快速了解和学习。

来源地址:https://blog.csdn.net/qq_44907926/article/details/131178470

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯