《Call Werkzeug》python werkzeug源码阅读 --预备知识:WSGI-Environment

本文介绍了WSGI-Environment的概念,它是Python Web开发中Werkzeug框架中的关键部分。environ字典存储CGI环境变量,WSGI服务器要求的变量,以及可能的服务器特定变量。应用程序应检查这些变量的存在性并准备备用方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WSGI-Environment是什么:

WSGI-Environment,就是在代码中最常见的environ
environ字典被用来包含CGI(Common Gateway Interface,必须的网关接口)环境变量,除非是空字符串,否则所有以下将要介绍的变量都必须指定,但是在空字符串的情况下,他们会被忽略。除非特殊说明。
简而言之:environ是一个字典,包含请求中所有的环境变量


environ经典情况下包含的键值对:

KeyValueRequiredMeaningExample
REQUEST_METHODstringHTTP的请求方式“GET”
SCRIPT_NAMEstringURL请求中path的开始部分,对应了应用程序对象“/api/v1”
PATH_INFOstringURL请求中path的其余部分,指定应用程序内部的虚拟位置“/login”
QUERY_STRINGstring请求参数“id=10086&page=1”
CONTENT_TYPEstringHTTP请求中的Content-Type字段“application/json”
CONTENT-LENGTHstringHTTP请求中的Content-Length字段“18868”
SERVER_NAMEstring服务器名“119.27.79.87”
SERVER_PORTstring服务器端口“6666”
SERVER_PROTOCOLstringHTTP协议版本“HTTP/1.0”
HTTP_*客户端提供的请求报头们,以"HTTP_"开头

WSGI要求下的变量:

NameTypeMeaning
wsgi.versiontuple一般为(1,0),代表WSGI版本1.0
wsgi.url_schemestringURL的scheme部分,值为"http"或"https"
wsgi.inputstream一个能被HTTP请求主体读取的输入流
wgsi.errorsstream用于记录错误信息的输出流,目的是记录程序或者其他标准化及可能的中心化错误。对很对服务器而言,wsgi.errors是服务器的主要错误日志
wsgi.multithreadbool如果一个应用程序对象同时处于被同一个进程中的不同线程调用,则为True
wsgi.multiprocessbool如果相同的应用程序对象同时被其他进程调用,则为True
wsgi.run_oncebool如果服务器/网关期待(但是不保证)应用程序在它所在的进程生命期间只会被调用一次,则为True

WSGI-Environment的规范:

  • 一个遵循WSGI规范的服务器或网关应该在文档中描述它们自己定义的同时,适当的说明一下它们可以提供哪些变量。而应用程序这边则应该对它们要用到的每一个变量的存在性进行检查,并且在检测某些变量不存在的时候要有备用措施
  • 除了CGI定义的变量,environ字典也可以包含任何操作系统相关的环境变量,并且并且必须包含第二部分提及的变量
  • environ字典可能会包含服务器定义的变量。这些变量应该用小写,数字,点号以及下划线来命名,并且必须定义一个该服务器/网关专有的前缀开头

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值