Python 标准库 BaseHTTPServer 中文翻译
Python 标准库 BaseHTTPServer 中文翻译。
注意: BaseHTTPServer模块在Python3中已被合并到http.server,当转换你的资源为 Python3 时 2to3 工具将自己主动适配导入。
此模块定义了两个类用于实现HTTP服务器(Web servers)。通常,此模块不被直接使用。可是它用来作为基类创建功能性的Web servers。
查看 SimpleHTTPServer 和 CGIHTTPServer 模块。
第一个类。HTTPServer,是一个 SocketServer.TCPServer 的子类。因此实现 SocketServer.BaseServer 的接口,它创建和监听 HTTP socket。分配请求和处理,创建和执行server的代码看起来是这种:
def run(server_class=BaseHTTPServer.HTTPServer,
handler_class=BaseHTTPServer.BaseHTTPRequestHandler):
server_address = ('', 8000)
httpd = server_class(server_address, handler_class)
httpd.serve_forever()
Class BaseHTTPServer.HTTPServer(server_address, RequestHandlerClass)
此类建立在 TCPServer 上通过储存服务器地址作为实例变量名为 server_name 和 server_port,
服务器可经由处理者进入。典型的是通过处理者的 server 实例变量。
class BaseHTTPServer.BaseHTTPRequestHandler(request, client_address, server)
这个类用来处理到达服务器的 HTTP 请求,通过它自身,它不能响应不论什么实际的 HTTP 请求。
它必须子类化来处理每个请求方法(比如:GET 或 POST)。
BaseHTTPRequestHandler 提供一个若干类和实例变量。和能够通过子类使用的方法。
处理者将解析请求和头信息,然后调用一个请求类型的特定方法。
方法名从请求构造。
样例中,对于请求方法
SPAM。do_SPAM()方法将会无參数调用。全部相关的信息被储存进处理者的实例变量。子类应该不须要覆写或者扩展 __init__ 方法。
BaseHTTPServerHandler 有下列实例变量:
client_address
包括一个关于client地址的结构为 (host, port) 的元祖。
server
包括server实例
command
包括命令(请求类型),样例:'GET'。
path
包括请求路径
request_version
包括请求的HTTP版本号的字符串,样例:'HTTP/1.0'。
headers
拥有一个通过 MessageClass 变量指定的类实例。
这个实例解析和管理 HTTP 请求的头信息。
rfile
包括一个输入流 stream,放置在输入数据选项的開始。
wfile
包括输出流用于回复一个响应response给clientclient。当写入这些stream时必须使用适当的HTTP协议。
BaseHTTPRequestHandler 有下列类变量:
server_vesion
指定服务器版本号。你或许会覆写它。he format is multiple whitespace-separated strings, where each string is of the form name[/version],样例:'BaseHTTP/0.2'。
sys_version
包括Python版本号,通过 version_string 方法和 server_version 类变量使用。
样例:'Python/1.4'。
error_message_format
指定一个格式化字符串用于创建一个错误响应给client。
它使用弧括号。键格式指定,所以格式操作数必须是一个字典。
code key 应该是一个整数。指定HTTP错误码值。message 应该是一个字符串包括一个错误信息的细节,explain 应该是一个错误码数字的解释。缺省 message 和 explain 的值能在 responses 类变量中被找到。
error_content_type
指定错误响应的 Content-Type HTTP 头发送给client,缺省值是 'text/html'。
2.6新增,在曾经,内容类型总是 'text/html'
protocol_version
这个指定的HTTP协议版本号用于响应,假设设置 'HTTP/1.1'。服务器会执行HTTP硬连接;不管怎样,你的服务器必须包括一个精确的 Content-Length 头(使用 send_header())在全部它响应的client中。
为了向后兼容,默认设置为 'HTTP/1.0'。
MessageClass
指定一个 rfc822.Message-like 类来解析HTTP头。典型的,这不用覆写,缺省设置 mimetools.Message 。
responses
此变量包括一个错误码数字和一个包括短和长信息的2元祖的映射,样例: {code:(shrotmessage, longmessage)}。
shortmessage 通经常使用于一个错误响应中的 message key,longmessage用来解释(查看 error_message_format 类变量)。
一个 BaseHTTPRequestHandler 实例有下面方法:
handle()
召唤一次 handle_one_request() (或者。假设硬连接是启用的,多次召唤)来响应来到的HTTP请求。你应该永远不须要覆写它;反而。实现适当的 do_* 方法。
handle_one_request()
这种方法将解析和分配请求给适配的 do_* 方法,你应该不须要覆写它。
send_error(code[, message])
发送和记录一个完整的错误回复给client。
code 指定HTTP错误码,message 是可选的, 很多其它特定文本。
一个完整的头设置被发送。随后使用 error_message_format 类变量排版文本。
send_response(code[,message])
发送一个响应头和记录接受的请求,HTTP响应行被发送,然后是 Server 和 Data 头,这两个头的值分别从 version_string 和 dare_time_string 方法拾起。
send_header(keyword, value)
向输出流写入一个指定的HTTP头,ketword 应该指定头关键字,value 指定它的值。
end_headers()
发送一个空白行,表面HTTP头响应结束。
log_request([code[,size]])
记录和接受(成功的)请求,code 应该指定为 HTTP code 和响应通讯,假设响应大小是有效的。应该作为 size 參数。
log_error(…)
当一个请求不能被履行记录一个错误,缺省, 它把信息传给 log_message(),所以它获得相同的參数(格式的和附加的值)。
log_message(format, …)
记录一个随意的信息给 sys.tederr。这是典型的覆写来创建定制错误信息的原理。format參数是一个标准的 printf-style 格式化字符串,在其它參数 log_message() 被用作输入的格式。clientip地址和当前日期和时间作为每个信息记录(message logged)的前缀。
version_string()
返回服务器软件版本号。这是一个 server_version 和 sys_version 类变量的组合。
date_time_string([timestamp])
返回由 timestramp 给予的日期和时间(这些必须通过 time.time() 格式返回),通过一个信息头来格式化,假设 timestamp 被省略。它将使用当前的日期和时间。
结果看上去像 'Sun, 06 Nov 1994 08:49:37 GMT'。
2.5新增 timestamp 參数。
log_date_time_string()
返回当前日期和时间。logging格式。
address_string()
返回client地址。logging格式。在clientIP地址执行一个名字查找。
很多其它样例
创建一个不用一直循环执行的服务器,直到某些条件被满足。
def run_while_true(server_class=BaseHTTPServer.HTTPServer,
handler_class=BaseHTTPServer.BaseHTTPRequestHandler):
"""
This assumes that keep_running() is a function of no arguments which
is tested initially and after each request. If its return value
is true, the server continues.
"""
server_address = ('', 8000)
httpd = server_class(server_address, handler_class)
while keep_running():
httpd.handle_request()
附加:
模块: CGIHTTPServer
支持CGI脚本的扩展请求处理。模块: SimpleHTTPServer
实际上根文档(document root)下限制响应到文件的基础请求处理。
Python 标准库 BaseHTTPServer 中文翻译的更多相关文章
- python第六天 函数 python标准库实例大全
今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...
- python标准库00 学习准备
Python标准库----走马观花 python有一套很有用的标准库.标准库会随着python解释器一起安装在你的电脑上的.它是python的一个组成部分.这些标准库是python为你准备的利器,可以 ...
- Python标准库、第三方库和外部工具汇总
导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...
- Python 标准库、第三方库
Python 标准库.第三方库 Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具.这些库可用于文件读写 ...
- 140种Python标准库、第三方库和外部工具
导读:Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库.函数和外部工具.其中既有Python内置函数和标准库,又有第三方库和工具. 这些库可用于文件读写.网络抓取和解析.数据连 ...
- Python标准库的学习准备
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python标准库是Python强大的动力所在,我们已经在前文中有所介绍.由于标准 ...
- Python标准库——走马观花
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python有一套很有用的标准库(standard library).标准库会随着 ...
- 转--Python标准库之一句话概括
作者原文链接 想掌握Python标准库,读它的官方文档很重要.本文并非此文档的复制版,而是对每一个库的一句话概括以及它的主要函数,由此用什么库心里就会有数了. 文本处理 string: 提供了字符集: ...
- Python 标准库一览(Python进阶学习)
转自:http://blog.csdn.net/jurbo/article/details/52334345 写这个的起因是,还是因为在做Python challenge的时候,有的时候想解决问题,连 ...
随机推荐
- LCIS最长公共上升子序列
最长公共上升子序列LCIS,如字面意思,就是在对于两个数列A和B的最长的单调递增的公共子序列. 这道题目是LCS和LIS的综合. 在LIS中,我们通过两重循环枚举当序列以当前位置为结尾时,A序列中当前 ...
- 二维树状数组+差分【p4514】上帝造题的七分钟
Description "第一分钟,X说,要有矩阵,于是便有了一个里面写满了\(0\)的\(n\times m\)矩阵. 第二分钟,L说,要能修改,于是便有了将左上角为\((a,b)\),右 ...
- 洛谷——P2117 小Z的矩阵
P2117 小Z的矩阵 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1,则G(A)等于所有A[i][j]*A[j][i]的和对2取余 ...
- 6、Flask实战第6天:视图函数Response返回值
视图函数的返回值会被自动转换为一个响应对象,Flask的转换逻辑如下: 如果返回的是一个合法的响应对象,则直接返回 可以使用make_response函数来创建Response对象,这个方法可以设置额 ...
- 12、Django实战第12天:课程机构列表页数据展示
今天完成的是课程机构列表页.... 1.启动服务,进入xadmin后,添加5个城市信息用作测试数据 2.添加课程机构,其中有一项要上传封面图的地方要注意 封面图上传路径是我们在models中设置好的 ...
- Fiddler 高级用法:Fiddler Script 与 HTTP 断点调试
转载自 https://my.oschina.net/leejun2005/blog/399108 1.Fiddler Script 1.1 Fiddler Script简介 在web前端开发的过程中 ...
- [BZOJ2823][BZOJ1336][BZOJ1337]最小圆覆盖(随机增量法)
算法介绍网上有很多,不解释了. 给出三点坐标求圆心方法:https://blog.csdn.net/liyuanbhu/article/details/52891868 记得先random_shuff ...
- 求满足n^2>12000的n的最大值 Exercise05_13
/** * @author 冰樱梦 * 时间:2018年下半年 * 题目:求满足n^2>12000的n的最大值 * */ public class Exercise05_13 { public ...
- 【OpenJudge8464】【序列DP】股票买卖
股票买卖 总时间限制: 1000ms 内存限制: 65536kB [描述] 最近越来越多的人都投身股市,阿福也有点心动了.谨记着“股市有风险,入市需谨慎”,阿福决定先来研究一下简化版的股票买卖问题. ...
- 动态RIP配置路由表
动态RIP配置路由表 以Router11为例子: (1)配置端口ip(两个端口需要设置两个ip) Router(config)#inter f0/0 Router(config-if)#ip add ...