socketserver剖析.html
- server 端代码结构:
# socketserver 在处理用户请求时,同时使用了 “报警器(select)”和“腿毛(thread)”的功能import socketserverclass MyClass(socketserver.BaseRequestHandler):
def handler(self):
pass
obj = socketserver.ThreadingTCPServer(('127.0.0.1',9999), MyClass)obj.serve_forever()
- 执行流程:
- server = socketserver.ThreadingTCPServer(('127.0.0.1', 9997), MysocketServer)
- 1、实例化一个对象,并赋值给server,实则为执行类中构造方法:
- 从下到上查找__init__方法,ThreadingTCPServer、ThreadingMixIn,均没有__init__构造方法,从TCPServer中查找
- TCPServer中有__init__,且做了2件事情:
- 执行BaseServer父类中__init__方法(此时自定义类MySocketserver,已经赋值给了RequestHandlerClass)
- 创建一个socket、绑定并监听起来 # 可通过 server.socket访问
- 2、server.serve_forever()
- 从下到上,依次查找并执行如下方法:
- serve_forever(),
- 只有BaseServer类中有,执行该方法,发现其又执行了self._handler_request_noblock()
- _handler_request_noblock(),
- 只有BaseServer中有,执行该方法,发现其又执行了self.process_request()
- self.process_request(),
- ThreadingMixIn类和BaseServer中都有,执行ThreadingMixIn中 process_request方法:创建一个线程,target为process_request_thread()方法
- serve_forever(),
转载于:https://www.cnblogs.com/qiaogy/p/5875439.html
socketserver剖析.html相关推荐
- 自己实现多线程的socket,socketserver源码剖析
1,IO多路复用 三种多路复用的机制:select.poll.epoll 用的多的两个:select和epoll 简单的说就是: 1,select和poll所有平台都支持,epoll只有linux支持 ...
- Python 第八篇:异常处理、Socket语法、SocketServer实现多并发、进程和线程、线程锁、GIL、Event、信号量、进程间通讯...
本节内容: 异常处理.Socket语法.SocketServer实现多并发.进程和线程.线程锁.GIL.Event.信号量.进程间通讯.生产者消费者模型.队列Queue.multiprocess实例 ...
- bottle框架剖析
bottle框架剖析 使用 源码分析 一.使用 大致有以下几部分 quick start request routing generate contents request Data template ...
- 4.2.10 Kafka源码剖析, 阅读环境搭建, broker启动流程, topic创建流程, Producer生产者流程, Consumer消费者流程,
目录 4.1 Kafka源码剖析之源码阅读环境搭建 4.1.1 安装配置Gradle 4.1.2 Scala的安装和配置 4.1.3 Idea配置 4.1.4 源码操作 4.2 Kafka源码剖析之B ...
- 网络编程--多线程 , socketserver
内容补充 python2与python3的区别? """ python3对unicode字符的原生支持 Python2中使用ASCII码作为默认编码方式导致string有 ...
- volatile关键字之全面深度剖析
引言 volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字 ...
- TensorFlow基础剖析
TensorFlow基础剖析 一.概述 TensorFlow 是一个使用数据流图 (Dataflow Graph) 表达数值计算的开源软件库.它使用节点表示抽象的数学计算,并使用 OP 表达计算的逻辑 ...
- c语言赋值x为字母,C语言算术、赋值、关系、逻辑运算详细剖析---
标识符和关键字 ¨标识符:用来标识程序中的变量.符号常量.函数.数组.类型.文件等对象的名字.标识符只能由字母.数字和下划线组成,且第一个字符必需为字母或下划线.C语言中大小写字母是两个不同的字符. ...
- python3socket非阻塞_利用Python中SocketServer 实现客户端与服务器间非阻塞通信
利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信. 首先,先了解下SocketServer模块中可供使用的类: BaseServer:包含服务器的核心功能与混合(mix-in ...
最新文章
- centos 脚本基础练习1
- 技术直播:讲一个Python编写监控程序的小故事
- 学习Kotlin(七)反射和注解
- js逻辑训练题_二建冲刺必刷300题!精选历年真题+母子题+模考易错题!
- drop 很慢 物化视图_终于解决了物化视图复制的问题
- 中国电信:预计2021年归母净利润同比增长23%-25%
- springcloud工作笔记094---springcloud项目后端验证_hibernate validator后端校验字段_介绍了解
- Atitit 异常机制与异常处理的原理与概论
- 单片机编程用什么软件?单片机开发软件有哪些?华维告诉你.
- RiPlus子主题V1.3-Unreal[幻]主题WordPress主题模板美化wp主题源码
- psd缩略图上传组件
- Google Map Web服务API
- MySQL高可用架构故障自动转移插件MHA
- 用java实现一个简单的网络聊天室
- html文档成品,HTML成品代码
- 饥荒无条件制作下载_饥荒巨人国无条件制造版
- 【苏小林主页】基于TP6和光年模板的个人主页
- oa系统都要服务器,oa系统需要购置云服务器吗
- C语言 提取软件文字,使用OCR文字识别软件如何将图中文字识别提取出来
- 卡诺图和Apple Watch的第一次亲密接触
热门文章
- 那年我整理的JavaEE面试题
- SELinux系列(十三)—默认安全上下文的查询和修改(semanage命令)
- 零代码、不花钱就能做大屏,这个报表工具帮了大忙
- 【实例解析】某水泥企业应用商业智能提升管理效率
- 一部分 数据 迁移_超原版速度110倍,针对PyTorch的CPU到GPU张量迁移工具开源
- cpu超频软件_Easy OC,装机小白进阶大神的好用软件
- 中文件编码方式_一文解开java中字符串编码的小秘密
- Win7matlab7.0安装教程,Win7下MATLAB7.0安装教程
- WampServer安装教程
- 数据结构(字符串)—— 删除“b“和“ac“