位置: 编程技术 - 正文

python探索之BaseHTTPServer-实现Web服务器介绍(python挑战)

编辑:rootadmin

推荐整理分享python探索之BaseHTTPServer-实现Web服务器介绍(python挑战),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python solution,python探索性分析,python sobel,the python tutorial,python探索性数据分析,python挖掘,python数据探索,python探索性分析,内容如对您有帮助,希望把文章链接给更多的朋友!

在Python探索之SocketServer详解中我们介绍了Python标准库中的SocketServer模块,了解了要实现网络通信服务,就要构建一个服务器类和请求处理类。同时,该模块还为我们创建了不同的服务器类和请求处理类。

1.服务器类

BaseServerTCPServer(BaseServer)UDPServer(TCPServer)UnixStreamServerUnixDatagramServer

2.请求处理类

BaseRequestHandlerStreamRequestHandler(BaseRequestHandler)DatagramRequestHandler(BaseRequestHandler)

通过服务器类和请求处理类的搭配,我们可以创建不同类型的服务器,实现不同的协议类型。本文介绍的BaseHTTPServer模块便是继承TCPServer和StreamRequestHandler,实现了Web服务器的通信。

HTTP服务器

HTTP服务器继承自SocketServer模块中的TCPServer类。它的定义非常简单,只是重写了其中的一个方法。

重写的server_bind()方法主要是为了获取服务器名和端口。其余方法以及服务器的实现过程详见Python探索之SocketServer详解

此外,还可以从SocketServer模块中引入'mix-in'类,基于HTTPServer创建支持进程或线程的服务器。

HTTP请求处理基类

python探索之BaseHTTPServer-实现Web服务器介绍(python挑战)

为了处理HTTP请求,BaseHTTPServer模块构造了HTTP请求处理基类BaseHTTPRequestHandler,它继承自SocketServer模块中的StreamRequestHandler类。

HTTP请求处理基类中有一些重要的方法:

1.handle() ——这个方法是请求处理类真正处理请求具体工作的方法,例如解析到来的请求,处理数据,并发回响应等。在BaseHTTPRequestHandler中它是一个入口文件,将调用其他的方法完成请求处理。

2.handle_one_request() ——由handle()调用,用于处理请求。其主要工作包括:

调用parse_request()方法,解析请求,获取请求报文中的信息,包括请求的方法、请求URL、请求的HTTP版本号、请求首部等。如果解析失败,则调用send_error()方法发回一个错误响应。

调用do_SPAM() 方法。这个方法中的SPAM指代GET、POST、HEAD等请求方法,需要在请求处理类中构建具体的请求处理方法,例如do_GET处理GET请求,do_POST处理POST请求。do_SPAM() 方法可以调用send_response()、send_header()、end_headers()等方法创建响应首行和响应首部等内容。

3.parse_request() ——解析请求。

4.send_error() ——发回错误响应。

5.send_response() ——创建响应首行和响应首部等内容。

6.send_header() ——设置响应首部内容。

7.end_headers() ——调用此方法可以在首部后增加一个空行,表示首部内容结束(不适用于HTTP/0.9)

8.还包括其他的一些辅助函数。

需要注意的是:BaseHTTPRequestHandler是HTTP请求处理的基类,并不包含诸如do_GET、do_POST等方法,其他继承该类的请求处理类需要自己实现这些方法,已完成对具体请求的处理。对此,可以参考SimpleHTTPServer模块,也可查看文章Python探索之实现一个简单的HTTP服务器。

总结

标签: python挑战

本文链接地址:https://www.jiuchutong.com/biancheng/368748.html 转载请保留说明!

上一篇:Python探索之SocketServer详解(python socket操作)

下一篇:13个最常用的Python深度学习库介绍(py常用函数)

  • 进出口环节增值税计税基础
  • 递延所得税资产怎么计算
  • 增值税发票丢失最新处理办法
  • 成本计算账户期末一般有余额吗
  • 补贴收入是否缴税
  • 增值税专用发票明细太多怎么办
  • 中介费要求开发票中介公司不开
  • 增值发票盖章有什么用
  • 油卡预付款可以报销吗
  • 私企招残疾人可以辞职吗
  • 现金流量表余额等于货币资金吗
  • 辞退员工补偿的月平均工资如何计算
  • 发票代码和发票号码是什么
  • 津贴个人所得税怎么算出来的
  • 企业收回以前注销时的坏账准备余额怎么处理?
  • 银行承兑汇票怎么填写
  • 支付收购股权款如何做账
  • 确认应收账款不确认收入
  • 银行贷款利息支出汇算清缴需要调整吗
  • 超市预付款应做在哪个会计科目?
  • 项目部管理人员及作业人员的
  • 小微企业开普通发票
  • 退税上传,申报文件上传失败
  • 招标文件费属于哪类税收编码
  • 生产负荷的计算
  • 海关专用缴款书怎么认证?
  • 发票已认证开票方未报税要怎么作废?
  • 改造工程完工会计分录
  • 前两个月亏损第三个月盈利所得税怎么计算
  • 企业转产是什么意思
  • 房地产公司的存货分析
  • 社保增加人员网上申报
  • 税盘没反应
  • 应交增值税的结转
  • 不得抵扣的进项税额计入哪里
  • 没有营业执照哪个银行可以办理房产抵押贷款
  • macbook怎么保存
  • bug is
  • 外贸企业代理出口销售的出口退税手续由谁办理
  • 油气勘探支出包括
  • h5调用海康摄像头
  • vue获取input
  • 小企业会计科目表
  • 分公司开票总公司付款可以吗
  • 企业购进专门用于研发的生产设备
  • 预付账款可以抵扣增值税么
  • 金税盘购买的会计分录
  • 购买银行理财产品安全吗
  • 处理交易性金融资产增值税买价含佣金吗
  • 银行备付金账户是什么帐户
  • 公司员工入职的心得体会
  • 留底税额账上怎么体现
  • 红字的记账凭证怎么记账
  • 记账凭证是不是转账凭证
  • 以物易物有什么好处
  • 定额发票的使用方法
  • 建筑企业提供服务的机制保障
  • 建账在哪里完成
  • 出口货物开票怎么处理
  • 会计及库管岗位职责(要求)
  • 私营企业固定资产法律制度
  • freebsd软件安装
  • win10命令提示符哪里打开
  • windows7开机
  • qtzgacer.exe - qtzgacer进程是什么文件 .作用是什么
  • windows10的开始菜单
  • linux config
  • windows8有几个模式
  • Linux Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点
  • 黑马程序员学费多少钱2022
  • android基本控件使用方法
  • python怎么编写二维码
  • 深入理解新发展理念,推进供给侧结构性改革
  • 光伏发电备案证如何办理
  • 四川纳税互动平台app
  • 安徽省国家税务局网上办税平台
  • 合规管理的基本要求
  • 美国非税收入排名榜
  • 税务局宣传报道
  • 为什么企业减少注册资金的原因
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设