50、【Ubuntu】【Gitlab】拉出内网 Web 服务:http.server 单/多线程分析(二) - 教程

news/2026/1/18 9:35:58/文章来源:https://www.cnblogs.com/yangykaifa/p/19497835

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Ubuntu】【Gitlab】拉出内网 Web 服务:http.server 单/多线程分析(一)
分析了 Python http.server 模块默认启用的是多线程模型,并对单线程启动做了测试,下面继续

Python http.server 单/多线程分析

首先是之前 blog 提到,启动了 slow_server.py 之后,在终端输入

time curl http://localhost:2027/a

去查询该 Web 服务的响应时间如下
在这里插入图片描述
可以看到需要 10s 的时间 Web 服务才能响应,这和 SlowHandler 里面定义的 10s 休眠时间是一样的
在这里插入图片描述
这里的一个小技巧是,访问 \a 这样一个不存在的页面,只返回一个 404 错误码,不然 curl 返回的内容可就太多了

然后再接着做一个测试,在输入 time curl http://localhost:2027/a 的同时,在另一个终端再输入 time curl http://localhost:2027/b,模拟并发访问的情况

可以看到,访问 \a 页面的等待时间依旧是 10s(因为是先点开访问的)
在这里插入图片描述
而后点开访问 \b 页面的等待时间则来到了 18s(不是 10s)
在这里插入图片描述
这就足以说明,\a 页面访问的处理,阻塞了 \b 页面访问的处理,这就是上篇 blog 里提到的 HTTPServer 继承了 TCPServer 默认的单线程同步处理能力

再来看下,如果是多线程启动,修改 slow_handler.py 如下

#!/usr/bin/env python3
from http.server import ThreadingHTTPServer, SimpleHTTPRequestHandler
import time
class SlowHandler(SimpleHTTPRequestHandler):
def do_GET(self):
print(f"Handling {self.path} ... (will sleep 10s)")
time.sleep(10)  # 模拟耗时操作
"""Serve a GET request."""
f = self.send_head()
if f:
try:
self.copyfile(f, self.wfile)
finally:
f.close()
server = ThreadingHTTPServer(('localhost', 2028), SlowHandler)
server.serve_forever()

其实就是把 HTTPServer 给换成 ThreadingHTTPServer,然后端口换一下
在这里插入图片描述

其他地方不变,再次运行 slow_handler.py,然后在两个终端分别输入 time curl http://localhost:2028/atime curl http://localhost:2028/b 同时访问两个页面

可以看到,访问 \a 页面的时间是 10s(先访问)

在这里插入图片描述

而访问 \b 页面的时间也同样是 10s(后访问)

在这里插入图片描述

可以看到,在多线程下,出现并发操作同时访问,两者的时间基本一致,因为访问 \b 页面时会新开一个线程进行处理,而不用等待 \a 页面访问结束

OK,再说一个有意思的点,上篇 blog 里提到,当前的 Python 版本为 v3.12.3,此时默认的是启动多线程 Web 访问,http.server 作为 Python 里的标准库模块,其源码在 CPython 仓库中
GitHub 地址:https://github.com/python/cpython/blob/main/Lib/http/server.py

国内访问 GitHub 比较慢,可以参考下 Gitee 的同步镜像仓库(Gitee 官方维护,自动同步 GitHub 仓库的镜像,更新及时,可信度高
Gitee 地址:https://gitee.com/mirrors/cpython/
在这里插入图片描述

点击标签
在这里插入图片描述
找到 v3.6.15 版本(21年9月),这是 v3.6 的最后一个版本

在这里插入图片描述
可以看到这个时候,http.server 模块默认启动的,还是单线程 Web 服务
在这里插入图片描述
而到了 v3.7.0 版本时(v3.7 的第一个版本)
在这里插入图片描述

http.server 模块被改成了默认多线程启动
在这里插入图片描述
所以 python -m http.serverPython < v3.7 时无法并发处理请求,只有等一个请求处理完,才能轮到下一个,所以只要有一个请求慢(比如大文件下载、time.sleep),整个服务器对外表现就是卡住了,用户体验不好,所以这里 Python 3.7 是一个分水岭,官方为了提升开发体验,把命令行服务器升级为多线程


OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Ubuntu】【Gitlab】拉出内网 Web 服务:http.server 单/多线程分析(三)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1177673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

梁文峰去年进账50亿,DeepSeek粮草充足

来源&#xff1a;量子位R1横空出世一年后&#xff0c;DeepSeek依然没有新融资。在大模型玩家上市的上市、融资的融资的热闹中&#xff0c;DeepSeek还是那么高冷&#xff0c;并且几乎没有任何商业化的动作。即便如此&#xff0c;AGI也没有落下——持续产出高水平论文&#xff0c…

vue3+python+django的人力资源数据分析设计与实现 企业员工培训考勤薪资系统

目录系统概述技术架构核心功能数据分析特色应用价值开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 该系统基于Vue3前端框架与PythonDjango后端技术栈&#xff0c;构建了一体化人力…

2026年目前专业的PERT二型保温管制造厂家怎么选,PPR铝合金衬塑复合管,PERT二型保温管加工厂口碑推荐榜单 - 品牌推荐师

行业现状与PERT二型保温管的核心优势 随着城市集中供暖、工业流体输送及基建工程领域对管道性能要求的持续提升,PERT二型保温管凭借其耐腐蚀、热损低、寿命长及施工便捷等特性,逐渐成为市场主流选择。该类管道通过外…

ACPI!RestartCtxtPassive函数对节点ACAD处理完返回DPC继续处理下一个有_STA方法的节点SLPB

ACPI!RestartCtxtPassive函数对节点ACAD处理完返回DPC继续处理下一个有_STA方法的节点SLPB 1: kd> g Breakpoint 13 hit eax0000004d ebx00000000 ecx89df0000 edx00002707 esi89d31000 edi00000000 eipf741d710 espf791ad20 ebpf791ad44 iopl0 nv up ei ng nz na p…

vue3+python+django的日本旅游攻略系统

目录系统概述技术架构核心功能创新点应用价值开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 基于Vue3、Python和Django的日本旅游攻略系统是一个现代化、响应式的Web应用&#xf…

广东地区飞旋镜子加工中心详细介绍,功能亮点与适用场景全解析 - 工业品牌热点

在玻璃与岩板深加工行业,一台高效、精准的加工设备是企业破解多品类加工难、人工成本高、精度不稳定痛点的核心武器。面对市场上功能单一、操作复杂的传统设备,企业亟需能覆盖多工序、适配多场景的一体化解决方案。以…

vue3+python+django的高效交互式在线教育平台的设计与实现

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 随着在线教育需求的快速增长&#xff0c;构建高效、交互式的教育平台成为技术热点。基于Vue3、Python和Django的全栈技术方案&…

爆款实战!Vue3+Spring Boot+MySQL达成电商商品自动分类系统(含三级类目管理+规则兜底)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

牙齿种植必看:本地高评分牙科品牌排行,牙齿美白/牙齿冠修复/牙齿磨损严重怎么修复/牙周治疗/口腔正畸牙齿种植推荐排行榜推荐排行榜 - 品牌推荐师

随着国民健康意识的提升与口腔医疗技术的飞速发展,牙齿种植已成为缺牙修复的主流选择。面对市场上众多的口腔医疗机构,如何选择一家技术可靠、服务优质、口碑良好的牙科品牌,成为众多消费者的核心关切。本文基于公开…

C86 架构详解

C86 架构详解 目录 概述发展背景与定位 x86生态的主导地位国产x86的两条路径 技术路线与微架构 指令集层面微架构层面SoC与接口 安全与自主可控 国密算法硬件加速体系级安全机制权威安全认证 软件生态与应用场景 广泛的软件生态兼容性开放的产业生态典型应用场景 市场定位与对…

COOP、COEP、CORS 详解

COOP、COEP、CORS 详解 目录 概述核心概念对比CORS (Cross-Origin Resource Sharing)COEP (Cross-Origin Embedder Policy)COOP (Cross-Origin Opener Policy)跨域隔离 (Cross-Origin Isolation)其他相关概念策略关系与层级核心策略深度解析跨域隔离与高权限 API实战排查指南…

磁混凝制造企业如何选择,江苏、广东等地哪家更靠谱? - 工业品牌热点

随着工业废水和市政污水治理要求的不断提升,磁混凝技术因高效沉淀、占地小等优势成为水处理领域的热门选择,但很多企业在采购时都会陷入选哪家供应商更靠谱的困惑。本文围绕磁混凝生产厂哪家售后好磁混凝系统供应商哪…

救命神器!8款AI论文软件测评:专科生毕业论文救星

救命神器&#xff01;8款AI论文软件测评&#xff1a;专科生毕业论文救星 为什么需要这份AI论文工具测评&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的专科生开始借助AI工具辅助完成毕业论文。然而&#xff0c;面对市场上五花八门的AI论文软件&#xff0c;如何…

vue3+python django框架的青岛工学院线上文献阅览平台

目录青岛工学院线上文献阅览平台摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;青岛工学院线上文献阅览平台摘要 青岛工学院线上文献阅览平台基于Vue3前端框架与Python Django后端框架…

2026 年 1 月油桶烘箱厂家推荐排行榜,高温油桶烘箱,工业油桶烘箱,油桶烘箱加热原理,高效节能烘烤设备公司推荐 - 企业推荐官【官方】

2026年1月油桶烘箱厂家推荐排行榜:聚焦高温、工业应用与加热原理 在化工、新能源、复合材料及机械制造等诸多工业领域,油桶烘箱作为一种关键的热处理设备,承担着对存储在标准油桶内的粘稠物料、涂料、化学品或零部件…

vue3+python+django和Vue3的体育馆场地预约管理系统的设计与实现

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;摘要 体育馆场地预约管理系统基于前后端分离架构设计&#xff0c;采用Vue3作为前端框架&#xff0c;PythonDjango作为后端框架&…

深入 Python 对象模型:PyObject 与 PyVarObject 全解析

深入 Python 对象模型&#xff1a;PyObject 与 PyVarObject 全解析“理解 Python 的对象模型&#xff0c;就像看清冰山下的结构——你会写得更稳&#xff0c;调得更准&#xff0c;优化得更狠。”Python 是一门“万物皆对象”的语言。无论是整数、字符串、函数、类&#xff0c;甚…

超越“调用.fit()”:深度解析 Scikit-learn API 的设计哲学与高级范式

好的&#xff0c;遵照您的要求&#xff0c;我将以深度解析和独特视角&#xff0c;为您撰写一篇关于 Scikit-learn API 设计哲学与实践的技术文章。文章将围绕其核心的“元一致性”展开&#xff0c;并深入探讨其高级应用与扩展机制。 # 超越“调用.fit()”&#xff1a;深度解析 …

《挑战 json.dumps:手写一个比它快 5 倍的 JSON 序列化器》

《挑战 json.dumps&#xff1a;手写一个比它快 5 倍的 JSON 序列化器》“当你真正理解了 JSON 的底层序列化逻辑&#xff0c;你会发现&#xff0c;性能优化的空间远比想象中更大。”一、引子&#xff1a;为什么我们需要更快的 JSON 序列化&#xff1f; 在现代 Python 应用中&am…

安卓android广城理校园电动车租赁系统移动应用程序的开题

目录研究背景与意义系统目标技术方案创新点预期成果开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;研究背景与意义 随着校园规模扩大和绿色出行理念普及&#xff0c;电动车成为高校师生短途…