• WSGI 相关的东东(转载)


    Gunicorn-配置详解

    https://blog.csdn.net/y472360651/article/details/78538188

    ==============================

    WSGI
    WSGI的全称是Web Server Gateway Interface(Web服务器网关接口),它不是服务器、python模块、框架、API或者任何软件,只是一种描述web服务器(如nginx,uWSGI等服务器)如何与web应用程序(如用Django、Flask框架写的程序)通信的规范。

    server和application的规范在PEP3333中有具体描述,要实现WSGI协议,必须同时实现web server和web application,当前运行在WSGI协议之上的web框架有Bottle, Flask, Django。

    uWSGI
    uWSGI是一个全功能的HTTP服务器,实现了WSGI协议、uwsgi协议、http协议等。它要做的就是把HTTP协议转化成语言支持的网络协议。比如把HTTP协议转化成WSGI协议,让Python可以直接使用。

    uwsgi
    与WSGI一样,是uWSGI服务器的独占通信协议,用于定义传输信息的类型(type of information)。每一个uwsgi packet前4byte为传输信息类型的描述,与WSGI协议是两种东西,据说该协议是fcgi协议的10倍快。

    Nginx
    Nginx是一个Web服务器其中的HTTP服务器功能和uWSGI功能很类似,但是Nginx还可以用作更多用途,比如最常用的反向代理功能。

    Django
    Django是一个Web框架,框架的作用在于处理request和 reponse,其他的不是框架所关心的内容。所以如何部署Django不是Django所需要关心的。

    Django所提供的是一个开发服务器,这个开发服务器,没有经过安全测试,而且使用的是Python自带的simple HTTPServer 创建的,在安全性和效率上都是不行的。

    以下是最新版本Django有关runserver command的代码节选

    django.core.management.commands.runserver.Command:run

    django.core.management.commands.runserver.Command:inner_run

    其中inner_run函数中的run方法和run方法中server_cls 参数分别取自

    django.core.servers.basehttp:run

    django.core.servers.basehttp:WSGIServer

    在Django源码中可以很清楚的看出来,runserver起来的HTTPServer 就是Python自带的simple_server。而WSGIServer的父类就是wsgiref.simple_server。既然是simple了很多东西都是不太可以的。

    访问过程
    用一张图来描述一下上述过程:

     

    一个成熟的站点提供服务,需要Web服务器(静态数据)和App服务器(动态数据)。Web服务器目前属Nginx最强大,用户请求代理过来后,把数据返回给请求客户端。但是目前的互联网发展时代,都是包含动态数据处理的,这样一般Nginx不处理业务逻辑,都外包给后端的App服务器,就是你的django服务器。

    在需要性能优化的场景,通常单单nginx和uWSGI也是不够的。nginx主要优化的是连接数和静态文,uWSGI主要优化的是wsgi 服务,这些都只是手段。其它手段包括,优化数据库,增加缓存,加入负载均衡器,引入异步IO框架(如gunicorn 服务器的gevent框架),计算密集型模块用C重写等。 安全性方面,也会有很多考虑,这里不展开。
    ---------------------
    作者:Locutus
    来源:CSDN
    原文:https://blog.csdn.net/yjk13703623757/article/details/79457913
    =======================

    https://mp.weixin.qq.com/s/dZJInfKkx7gifdQ2fbvG_g

    WSGI是 Web Server Gateway Interface 的缩写。它是 Python应用程序(application)或框架(如 Django)和 Web服务器之间的一种接口,已经被广泛接受

    常见的web应用框架有:Django,Flask等         常用的web服务器软件有:uWSGI,Gunicorn等

    WSGI 对于 application 对象有如下三点要求:
    
    必须是一个可调用的对象
    接收两个必选参数environ、start_response。
    返回值是可迭代对象,用来表示http body。

    Flask等web框架会自己附带一个wsgi服务器(这就是flask应用可以直接启动的原因),但是这只是在开发阶段用到的,在生产环境是不够用的,所以用到了uwsgi这个性能高的wsgi服务器。

  • 相关阅读:
    面试题
    关于TDD的想法
    GAMS 基础语法
    不要迷信数据
    在Microsoft AJAX Library下JavaScript的面向对象开发
    应用OOP的设计过程演化(一)
    应用OOP的设计过程演化(二)
    探索AJAX中的消息传输模式(一)
    应用OOP的设计过程演化(三)
    SecureCRT 6.0.2和SecureFX 6.0.2 软件 及 注册机
  • 原文地址:https://www.cnblogs.com/testzcy/p/10685520.html
Copyright © 2020-2023  润新知