精华内容
下载资源
问答
  • Waitress是一款具有生产质量的纯Python WSGI服务器,具有非常令人满意的性能。 除了存在于Python标准库中的依赖项之外,它没有任何依赖项。 它可以在Unix和Windows下的Python 3.6+上的CPython上运行。 还已知它可以...
  • 主要介绍了python web框架 django wsgi原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
  • a2wsgiWSGI应用程序转换为ASGI应用程序,或将ASGI应用程序转换为WSGI应用程序。 纯Python。 仅取决于标准库。 与其他转换器相比,优点是a2wsgi不会在内存中累积请求的内容或响应内容,因此您不必担心由a2wsgi...
  • WSGI网络框架 WSGIWeb-фреймворкнабазеuWSGIсиспользованиемnginx。 Установка 注释:uWSGI在Linux上使用WSGIработаеттолькопод。 sudo apt-get update ...
  • WSGI

    2021-04-22 17:54:58
    在Python Web开发时经常会遇到WSGI,所以WSGI到底是什么呢?本文我们一起来揭开WSGI神秘的面纱! 先来看一下WSGI的介绍: 全称Python Web Server Gateway Interface,指定了web服务器和Python web应用或web框架之间...

    https://segmentfault.com/a/1190000011365430
    在Python Web开发时经常会遇到WSGI,所以WSGI到底是什么呢?本文我们一起来揭开WSGI神秘的面纱!

    先来看一下WSGI的介绍:

    全称Python Web Server Gateway Interface,指定了web服务器和Python web应用或web框架之间的标准接口,以提高web应用在一系列web服务器间的移植性。 具体可查看 官方文档

    从以上介绍我们可以看出:

    WSGI是一套接口标准协议/规范;
    通信(作用)区间是Web服务器和Python Web应用程序之间;
    目的是制定标准,以保证不同Web服务器可以和不同的Python程序之间相互通信
    你可能会问,为什么需要WSGI?

    首先,我们明确一下web应用处理请求的具体流程:

    用户操作操作浏览器发送请求;
    请求转发至对应的web服务器
    web服务器将请求转交给web应用程序,web应用程序处理请求
    web应用将请求结果返回给web服务器,由web服务器返回用户响应结果
    浏览器收到响应,向用户展示
    可以看到,请求时Web服务器需要和web应用程序进行通信,但是web服务器有很多种啊,Python web应用开发框架也对应多种啊,所以WSGI应运而生,定义了一套通信标准。试想一下,如果不统一标准的话,就会存在Web框架和Web服务器数据无法匹配的情况,那么开发就会受到限制,这显然不合理的。

    既然定义了标准,那么WSGI的标准或规范是?

    web服务器在将请求转交给web应用程序之前,需要先将http报文转换为WSGI规定的格式。

    WSGI规定,Web程序必须有一个可调用对象,且该可调用对象接收两个参数,返回一个可迭代对象:

    environ:字典,包含请求的所有信息
    start_response:在可调用对象中调用的函数,用来发起响应,参数包括状态码,headers等
    通过以上学习,一起实现一个简单WSGI服务吧

    首先,我们编写一个符合WSGI标准的一个http处理函数:

    def hello(environ, start_response):
    status = “200 OK”
    response_headers = [(‘Content-Type’, ‘text/html’)]
    start_response(status, response_headers)
    path = environ[‘PATH_INFO’][1:] or ‘hello’
    return [b’

    %s

    ’ % path.encode()]
    该方法负责获取environ字典中的path_info,也就是获取请求路径,然后在前端展示。

    接下来,我们需要一个服务器启动WSGI服务器用来处理验证,使用Python内置的WSGI服务器模块wsgiref,编写server.py:

    coding:utf-8

    “”"
    desc: WSGI服务器实现
    “”"
    from wsgiref.simple_server import make_server
    from learn_wsgi.client import hello

    def main():
    server = make_server(‘localhost’, 8001, hello)
    print(‘Serving HTTP on port 8001…’)
    server.serve_forever()

    if name == ‘main’:
    main()
    执行python server.py,浏览器打开"http://localhost:8001/a",即可验证。

    通过实现一个简单的WSGI服务,我们可以看到:通过environ可以获取http请求的所有信息,http响应的数据都可以通过start_response加上函数的返回值作为body。

    当然,以上只是一个简单的案例,那么在python的Web框架内部是如何遵循WSGI规范的呢?以Flask举例,

    Flask与WSGI

    Flask中的程序实例app就是一个可调用对象,我们创建app实例时所调用的Flask类实现了__call方法,__call方法调用了wsgi_app()方法,该方法完成了请求和响应的处理,WSGI服务器通过调用该方法传入请求数据,获取返回数据:

    def wsgi_app(self, environ, start_response):
    ctx = self.request_context(environ)
    error = None
    try:
    try:
    ctx.push()
    response = self.full_dispatch_request()
    except Exception as e:
    error = e
    response = self.handle_exception(e)
    except: # noqa: B001
    error = sys.exc_info()[1]
    raise
    return response(environ, start_response)
    finally:
    if self.should_ignore_error(error):
    error = None
    ctx.auto_pop(error)

    def call(self, environ, start_response):
    return self.wsgi_app(environ, start_response)
    Flask的werkzeug库是一个非常优秀的WSGI工具库,具体的实现我们之后再详细学习。

    以上。
    在这里插入图片描述

    展开全文
  • WSGI Web应用程序的请求记录 这是一个中间件,可用于将请求记录到基于WSGI的站点。 它甚至模仿了Apache的组合日志格式,使您可以使用许多工具中的任何一种来进行Apache日志文件分析。 通过使用Python的标准库日志...
  • 一、安装mod_wsgi 3.4: ./configure --with-apxs=/Users/levin/dev/apache2.2.27/bin/apxs --with-python=/usr/bin/python make make install 编辑httpd.conf使Apache导入模块mod_wsgi.so以及引入vhost配置文件:...
  • mod_wsgi软件包提供了一个Apache模块,该模块实现了WSGI兼容接口,用于将基于Python的Web应用程序托管在Apache Web服务器之上。 可以通过两种方式之一从源代码安装mod_wsgi。 安装mod_wsgi的第一种方法是许多...
  • mod_wsgi-4.5.17+ap24vc14-cp36-cp36m-win_amd64.whl,Apache2.4版本部署Django项目必用模块
  • Python模块WSGI使用详解

    2020-12-23 18:34:32
    WSGI(Web Server Gateway Interface):Web服务网关接口,是Python中定义的服务器程序和应用程序之间的接口。 Web程序开发中,一般分为服务器程序和应用程序。服务器程序负责对socket服务的数据进行封装和整理,而...
  • mod_wsgi-4.9.0-cp38-cp38-win_amd64
  • mod_wsgi-3.5

    2018-03-30 09:55:29
    mod_wsgi各版本,包括cpu架构,python版本限制。用于apache的模块组件。
  • django python2 用apache部署的时候,采用mod_wsgi来启动。 What Is mod_wsgi? The aim of mod_wsgi is to implement a simple to use Apache module which can host any Python application which supports the ...
  • mod_wsgi-4.9.0-cp38-cp38-win32
  • 支持python3.8,win32版本
  • win10版本mod_wsgi

    2018-12-29 14:18:16
    适用win10 python3.6 apache2.4版本的系统安装需要,适用习惯使用windows版本操作的
  • mod wsgi so

    2017-03-26 19:13:34
    mod wsgi so
  • 如果我们的Web应用是采用Python开发,而且符合WSGI规范,比如基于Django,Flask等框架,那如何将其部署在Apache中呢?本文中,我们就会介绍如何使用Apache模块mod_wsgi来运行Python WSGI应用。 安装mod_wsgi 我们...
  • mod_wsgi-4.9.0-cp37-cp37m-win_amd64
  • python 部署 apache 时,需要的安装包,mod_wsgi-4.7.1+ap24vc15-cp37-cp37m-win_amd64.whl
  • wsgi

    2018-07-07 10:41:24
    好消息是Python内置了一个WSGI服务器,这个模块叫wsgiref,它是用纯Python编写的WSGI服务器的参考实现。所谓“参考实现”是指该实现完全符合WSGI标准,但是不考虑任何运行效率,仅供开发和测试使用。 运行WSGI服务 ...

    1、廖雪峰的网站

    https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832689740b04430a98f614b6da89da2157ea3efe2000

    了解了HTTP协议和HTML文档,我们其实就明白了一个Web应用的本质就是:

    1. 浏览器发送一个HTTP请求;

    2. 服务器收到请求,生成一个HTML文档;

    3. 服务器把HTML文档作为HTTP响应的Body发送给浏览器;

    4. 浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示。

    所以,最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回。Apache、Nginx、Lighttpd等这些常见的静态服务器就是干这件事情的。

    如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,还没开始写动态HTML呢,就得花个把月去读HTTP规范。

    正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心用Python编写Web业务。

    这个接口就是WSGI:Web Server Gateway Interface。

    WSGI接口定义非常简单,它只要求Web开发者实现一个函数,就可以响应HTTP请求。我们来看一个最简单的Web版本的“Hello, web!”:

    def application(environ, start_response):
        start_response('200 OK', [('Content-Type', 'text/html')])
        return '<h1>Hello, web!</h1>'

    上面的application()函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数:

    • environ:一个包含所有HTTP请求信息的dict对象;

    • start_response:一个发送HTTP响应的函数。

    application()函数中,调用:

    start_response('200 OK', [('Content-Type', 'text/html')])

    就发送了HTTP响应的Header,注意Header只能发送一次,也就是只能调用一次start_response()函数。start_response()函数接收两个参数,一个是HTTP响应码,一个是一组list表示的HTTP Header,每个Header用一个包含两个strtuple表示。

    通常情况下,都应该把Content-Type头发送给浏览器。其他很多常用的HTTP Header也应该发送。

    然后,函数的返回值'<h1>Hello, web!</h1>'将作为HTTP响应的Body发送给浏览器。

    有了WSGI,我们关心的就是如何从environ这个dict对象拿到HTTP请求信息,然后构造HTML,通过start_response()发送Header,最后返回Body。

    整个application()函数本身没有涉及到任何解析HTTP的部分,也就是说,底层代码不需要我们自己编写,我们只负责在更高层次上考虑如何响应请求就可以了。

    不过,等等,这个application()函数怎么调用?如果我们自己调用,两个参数environstart_response我们没法提供,返回的str也没法发给浏览器。

    所以application()函数必须由WSGI服务器来调用。有很多符合WSGI规范的服务器,我们可以挑选一个来用。但是现在,我们只想尽快测试一下我们编写的application()函数真的可以把HTML输出到浏览器,所以,要赶紧找一个最简单的WSGI服务器,把我们的Web应用程序跑起来。

    好消息是Python内置了一个WSGI服务器,这个模块叫wsgiref,它是用纯Python编写的WSGI服务器的参考实现。所谓“参考实现”是指该实现完全符合WSGI标准,但是不考虑任何运行效率,仅供开发和测试使用。

    运行WSGI服务

    我们先编写hello.py,实现Web应用程序的WSGI处理函数:

    # hello.py
    ​
    def application(environ, start_response):
        start_response('200 OK', [('Content-Type', 'text/html')])
        return '<h1>Hello, web!</h1>'

    然后,再编写一个server.py,负责启动WSGI服务器,加载application()函数:

    # server.py
    # 从wsgiref模块导入:
    from wsgiref.simple_server import make_server
    # 导入我们自己编写的application函数:
    from hello import application
    ​
    # 创建一个服务器,IP地址为空,端口是8000,处理函数是application:
    httpd = make_server('', 8000, application)
    print "Serving HTTP on port 8000..."
    # 开始监听HTTP请求:
    httpd.serve_forever()

    确保以上两个文件在同一个目录下,然后在命令行输入python server.py来启动WSGI服务器:


    在Apache中运行Python WSGI应用

    https://www.cnblogs.com/Erick-L/p/7063173.html

    我们介绍如何使用Apache模块mod_wsgi来运行Python WSGI应用。

    安装mod_wsgi

    我们假设你已经有了Apache和Python环境,在Linux或者Mac上,那第一步自然是安装。在Ubuntu或Debian环境中,你可以使用apt-get命令来安装:

    sudo apt-get install libapache2-mod-wsgi
    sudo apt-get install libapache2-mod-wsgi-py3 

    不过我们建议采用编译安装,这样在任何系统中都可以安装成功,具体步骤如下:

    • 下载源码包

    mod_wsgi的源码托管在Github上,你可以从https://github.com/GrahamDumpleton/mod_wsgi/releases下载它各个版本的源码包。

    • 解压后,配置编译选项

    一般采用默认配置即可,即执行:

    ./configure

    如果要指定Apache和Python环境,那你需要加上”–with-apxs”和”–with-python”选项:

    ./configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/local/bin/python
    • 编译并安装

    sudo make && make install 
    • 在Apache配置文件中载入mod_wsgi

    让我们打开Apache的配置文件httpd.conf,默认是在:

    $ sudo vi /etc/httpd/conf/httpd.conf   # For Linux
    $ sudo vi /etc/apache2/httpd.conf      # For Mac

    在所有”Load Module”配置项的最后,加上载入mod_wsgi的配置,注意Linux和Mac的模块加载路径不同:

    LoadModule wsgi_module modules/mod_wsgi.so   # For Linux
    # LoadModule wsgi_module libexec/apache2/mod_wsgi.so   # For Mac 
    • 重启Apache来启用配置

    $ sudo service httpd restart       # For Linux
    $ sudo service apachectl restart   # For Mac

    测试mod_wsgi

    最简单的测试方法自然是Hello World,让我们在Apache的DocumentRoot根目录下创建一个文件”test.wsgi”。在文件中,我们写入这样的内容:

    def application(environ, start_response):
        status = '200 OK'
        output = 'Hello World!'
     
        response_headers = [('Content-type', 'text/plain'),
                            ('Content-Length', str(len(output)))]
        start_response(status, response_headers)
     
        return [output]

    这里的函数application即为WSGI应用对象,它返回的值就是该应用收到请求后的响应。然后,再打开Apache的配置文件httpd.conf,在其最后加上URL路径映射:

    WSGIScriptAlias /test /var/www/test.wsgi

    这里我们假设Apache的文档根目录是”/var/www”。

    现在你可以打开浏览器,访问一下”http://localhost/test”,如果看到”Hello World!”了,就说明mod_wsgi已经安装成功。

    我们可以试试运行Flask应用,当然首先是你本地Python环境已经安装了Flask,我们将”test.wsgi”改为:

    from flask import Flask
    application = Flask(__name__)
     
    @application.route('/')
    def index():
        return '<h1>Hello World!</h1>' 

    注意,这里必须要将Flask应用对象命名为”application”,这样才能被mod_wsgi识别。再用浏览器访问下,是不是能看到大标题”Hello World!”?


    展开全文
  • mod_wsgi.so全版本下载

    2017-12-28 14:26:33
    对应apache2.2,2.4;python2.6,2.7,3.3,3.4;win32,64全版本的所有mod_wsgi.so
  • mod_wsgi-4.7.1-cp36-cp36m-win_amd64
  • python环境搭建
  • mod_wsgi-4.7.0+ap24vc14-cp35-cp35m-win_amd64
  • WSGI协议 首先弄清下面几个概念: WSGI:全称是Web Server Gateway Interface,WSGI不是服务器,python模块,框架,API或者任何软件,只是一种规范,描述web server如何与web application通信的规范。server和...
  • mod_wsgi-4.5.24+ap24vc14-cp35-cp35m-win_amd64
  • Python WSGI的深入理解

    2020-09-20 04:57:14
    主要给大家介绍了关于Python WSGI的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • mod_wsgi源码/so文件

    2016-11-30 00:19:01
    该压缩包下,包含Linux下使用的mod_wsgi源码,也包含Windows/Mac下的so文件。 源码来自mod_wsgi官网,版本是3.4。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,602
精华内容 17,440
关键字:

wsgi