WSGI学习笔记

WSGI in Flask Web Frame

定义

  • WSGI 是一个在 Web 服务器和 Python Web 应用程序之间进行通信的中介。

  • 它解释了 Web 服务器如何与 Python Web 应用程序或框架通信,以及如何链接 Web 应用程序或框架以处理请求

  • WSGI实现 WSGI 接口的 Web 服务器端 运行 Python Web 应用程序

  • Python 标准 WSGI 在 PEP_3333 中有详细说明。了解有关 PEP 3333 的更多信息将帮助您更加熟悉 WSGI。

工作流程

  • WSGI 在开发Flask 应用程序时起着至关重要的作用 。我将讨论基于python和flask框架的应用程序的运行流程
    • 01 我们在Web浏览器界面输入一个URL并按下回车键时,Web browser(浏览器)会向Web server(服务器)发起一个HTTP请求(例如JSON格式的数据)。如果请求是一个静态内容,(如HTML、CSS、JavaScript文件或图片),Web服务器会直接返回这个文件。如果请求的是一个动态内容,Web服务器会将请求转发给WSGI服务器。
    • 02 接收到请求后WSGI服务器会调用Python Flask Web应用的可调用对象,并将请求信息作为参数包含在WSGI环境的input流中传递给这个可调用对象。
    • 03 Python Web应用会处理这个请求(如果传递的是JSON格式的数据,Flask应用可以使用request.get_json()方法来解析请求体中的JSON数据),生成响应。这个响应会被返回给WSGI服务器。
      请添加图片描述

WSGI服务器实现

WSGI Read the Docs 页面上有一个完整的 WSGI 服务器列表。 以下是本文推荐的 WSGI 服务器。

Green Unicorn 是一个基于 pre-fork worker 的模型 从 Ruby Unicorn 项目移植的服务器。

uWSGI正在获得动力 高性能的 WSGI 服务器实现。

mod_wsgi 是一个 Apache 实现 WSGI 规范的模块。

CherryPy 是一个纯 Python Web 服务器,也用作 WSGI 服务器。

WSGI服务器配置示例

Web 服务器的配置指定应将哪些请求传递给 要处理的 WSGI 服务器。一旦请求被处理并生成 WSGI 服务器,响应通过 Web 服务器传递回 浏览器。
本文以gevent服务器配置为例。

from gevent.pywsgi import WSGIServer
from flask import Flask
from app import make_app

flask_app = make_app()

def run_server(app):
    http_server = WSGIServer(('0.0.0.0', 5000), app)
    http_server.serve_forever()

if __name__ == '__main__':
    run_server(flask_app)

make_app为创建flask应用的函数,包含配置数据库,初始化 Bootstrap 和数据库,定义路由等操作,返回一个flask应用实例

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值