(一)Flask简介和快速使用

这篇具有很好参考价值的文章主要介绍了(一)Flask简介和快速使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于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)的问题,需要开发者具有较高的编程能力。

总结:

  • Tornado采用异步IO处理请求,请求的处理速度相对更快,可以处理高并发、大流量的Web服务。Django采用同步阻塞的处理方式,处理大量请求时可能被阻塞,处理速度相对较慢。Flask在性能上介于两者之间,相对Django,请求处理速度较快。

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

  • 根据上述的特点,Django适用于大型阻塞请求的Web应用,比如一些大型的社交网络、电商等;Flask适用于中小型的Web应用,可自由配置选择不同的第三方库来适应不同的需求,比如轻量级的Web服务、简单的博客、小型的数据服务等场景;Tornado适用于高并发、大流量、高实时性的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, Response
from werkzeug.serving import run_simple


@Request.application
def hello(request):
    return Response('hello world')


if __name__ == '__main__':
    # 请求一旦进来,执行第三个参数加括号
    run_simple('localhost', 4000, hello)   # hello(xxx)

(一)Flask简介和快速使用

主角:Flask实现hello world

from flask import Flask

app = 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简介和快速使用

  • 如上图,可以看到最终运行的就是werkzeug的run_simple()方法

  • 而在werkzeug版本的hello world里说过请求一旦进来,就会执行run_simple()方法第三个参数加括号

  • 此处是app对象调用的run()方法,所以第三个参数self就是app对象

  • app对象加括号就是调用对象的call()方法【留坑,后面会继续深究~】

拓展: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://www.toymoban.com/news/detail-480993.html

到了这里,关于(一)Flask简介和快速使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python-Web框架flask使用

    目录 1.Web框架 1.1 flask 1.1.1 debug调试  1.1.2 定义参数web服务 获取字符串 ​编辑 1.1.3 html网页渲染 1.13.1 带参数传给网页文件 普通元素 列表元素  字典元素 python的web框架,目录结构如下: 1.static存放的是css,js的样式文件 2.templates存放的是html文件 3.app.py是主要接口入口,默认创

    2024年02月16日
    浏览(56)
  • 【100天精通Python】Day49:Python Web编程_Web框架,Flask框架从安装到使用

    目录 1 Web 框架 2 python 中常用的web框架 3 Flask 框架的使用 3.1 Flask框架安装 3.2 第一个Flask程序 3.3 路由 3.3.1 基本路由

    2024年02月09日
    浏览(49)
  • 使用Dockerfile构建python项目镜像(flask框架+redis+环境变量)

    有时候如连接redis的url可能发生变化等,这时候就需要把一些变量放在环境变量中。         使用 --env 和 -e 是一样效果的。 1.1.1 配置Dockerfile文件 1.1.2 编写python示例程序 示例代码: 1.1.3 构建镜像         首先将python代码和dockerfile文件上传到已经安装了docker的服务器

    2024年02月07日
    浏览(50)
  • FastAPI 快速学习之 Flask 框架对比

           本文主要对 FastAPI 与 Flask 框架进行对比,以助快速学习。进一步了解FastAPI的高级使用方法,可参考 FastAPI官方文档 。如果对你有帮助,欢迎三连 收藏 点赞 关注 !!!          Flask作为Python语言中的老牌Web框架,已经被应用于大量的Python Web开发项目,其使用

    2024年01月17日
    浏览(44)
  • Python使用flask框架与前端建立websocket链接,并进行数据交互

    后端采用的框架为flask,前端用的flask自带的html编写,实现的功能为:前后端建立websocket链接并进行数据交互 一、编写一个flask后端服务 常规创建方式就可以,创建一个flask服务。声明一个websocket实例,以websocket的方式启动这个服务。 安装相关依赖: 声明应用和websocket实例

    2024年04月11日
    浏览(46)
  • 【100天精通python】Day50:python web编程_web框架,Flask的使用

    目录 1 Web 框架 2 python 中常用的web框架 3 Flask 框架的使用 3.1 Flask框架安装 3.2 第一个Flask程序 3.3 路由 3.3.1 基本路由

    2024年02月10日
    浏览(48)
  • 手把手教你使用Flask框架构建Python接口以及如何请求该接口

    Flask是一个轻量级的Web应用框架,基于Python编写,其核心思想是保持简洁,灵活性和易于扩展。 Flask是一个轻量级的Web应用框架,基于Python编写,其核心思想是保持简洁,灵活性和易于扩展。Flask提供了基本的Web开发工具和应用程序的结构,但同时也允许开发者自由选择其他库

    2024年02月06日
    浏览(107)
  • 快速实现用户认证:使用Python和Flask配合PyJWT生成与解密Token的教程及示例代码

    这段代码提供了一个使用 Python 和 Flask 结合 JWT (JSON Web Tokens) 进行用户认证的简单框架。它包括了生成 token、解码 token、检查用户状态和一个装饰器函数,用于保护需要认证的路由。下面是对代码的逐部分解释: 1. generate_token(user_id) 函数 这个函数用于为指定的用户 ID 生成一

    2024年02月22日
    浏览(52)
  • 【Python】极简部署私有化ChatGPT-Web,使用Flask框架编写网页版ChatGPT

    python环境下可极简配置 windows、linux、mac os均可部署 支持多用户使用 多对话管理 公式显示 流式逐字加载显示 代码高亮 仓库链接地址:https://github.com/LiangYang666/ChatGPT-Web,用的好麻烦给个star啦 可参照README 执行 python flask_main.py 运行程序.若程序中未指定apikey也可以在终端执行时

    2024年02月01日
    浏览(72)
  • python之 flask 框架(1)

    pycharm 查看方法的定义(类似.net 中 F12) ctrl + 单击(对应的方法) 两种方法 pip list 查看虚拟环境所有的包 pip freeze 查看自己安装的包 专业版pychram 社区版 要手动创建 @app.route(‘/xxx/converter:variable_name’) converter:参数类型 string:接受任何没有斜杠’/\\\'的字符串 默认参数类型

    2024年04月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包