import socket

from _socket import getdefaulttimeout

class MySocket(socket.socket):

"""重写服务器端socket"""

def __init__(self, *args, **kwargs):

super().__init__(*args, **kwargs)

# self.level 标志socket类型 0:普通服务器socket;1:accept得到的socket

self.level = 0  # 普通socket

def close(self):

super().close()

if self.level:

print("关闭服务器端accept得到的socket时要做的工作")

else:

print("关闭服务器普通socket时要做的工作")

def __del__(self):

super().__del__()

if self.level:

print("删除服务器端accept得到的socket时要做的工作")

else:

print("删除服务器普通socket时要做的工作")

def accept(self):

"""重写accept使其得到自己实现的socket"""

fd, addr = self._accept()

type = self.type & ~globals().get("SOCK_NONBLOCK", 0)

# 指向自己的socket类

sock = MySocket(self.family, type, self.proto, fileno=fd)

# self.level 标志socket类型 0:普通服务器socket;1:accept得到的socket

sock.level = 1

if getdefaulttimeout() is None and self.gettimeout():

sock.setblocking(True)

return sock, addr

python的异步网络编程_python异步网络编程怎么使socket关闭之后立即执行一段代码?...相关推荐

  1. python高级网络编程_Python高级网络编程系列之基础篇

    一.Socket简介 1.不同电脑上的进程如何通信? 进程间通信的首要问题是如何找到目标进程,也就是操作系统是如何唯一标识一个进程的! 在一台电脑上是只通过进程号PID,但在网络中是行不通的,因为每台 ...

  2. python2异步编程_python异步编程入门

    这几天看代码,总是会接触到很多异步编程,之前只想着实现功能,从来没考虑过代码的运行快慢问题,故学习一番. 从0到1,了解python异步编程的演进 1.urllib与requests爬虫 reques ...

  3. python2异步编程_python异步编程 (转载)

    转自:https://zhuanlan.zhihu.com/p/27258289 本文将会讲述Python 3.5之后出现的async/await的使用方法,以及它们的一些使用目的,如果错误,欢迎指正 ...

  4. python异步处理请求_python异步处理HTTP请求

    我需要为django查询集的每个条目生成一个PDF报告.会有3万到4万个条目.在 PDF是通过外部API生成的.由于当前是按需生成的,因此这是通过HTTP请求/响应同步处理的. 对于这个任务,这是不同 ...

  5. python 图形化socket编程_Python黑帽编程2.8 套接字编程

    Python黑帽编程2.8 套接字编程 套接字编程在本系列教程中地位并不是很突出,但是我们观察网络应用,绝大多数都是基于Socket来做的,哪怕是绝大多数的木马程序也是如此.官方关于socket编程的 ...

  6. python面向对象的编程_python面向对象的编程

    创建类和对象 面向对象编程是一种编程方式,此编程方式的落地需要使用 "类" 和 "对象" 来实现,所以,面向对象编程其实就是对 "类" 和 ...

  7. python3多线程编程_Python 3多线程编程学习笔记-基础篇

    本文是学习<Python核心编程>的学习笔记,介绍了Python中的全局解释器锁和常用的两个线程模块:thread, threading,并对比他们的优缺点和给出简单的列子. 全局解释器锁 ...

  8. python多线程网络编程_python之网络编程-多线程

    死锁现象,递归锁 所谓死锁:是指两个或两个以上的进程或线程在执行过程中,因为争夺资源而造成的一种互相等待的现象,若无外力作用,他们将无法推进下去,此时称系统处于死锁状态或系统产生了死锁,这些永远在相互 ...

  9. python异步和多线程_Python 异步 IO(asyncio)、多进程、多线程性能对比

    IO 密集型应用 IO 密集型应用CPU等待IO时间远大于CPU 自身运行时间,太浪费:常见的 IO 密集型业务包括:浏览器交互.磁盘请求.网络爬虫.数据库请求等 image.png Python 世 ...

最新文章

  1. 单例模式的标准写法、注意事项、作用及测试
  2. UVA 10746 Crime Wave - The Sequel
  3. 书籍:Python机器学习蓝图第2版 Python Machine Learning Blueprints 2nd - 2019.pdf
  4. java和python工资-python为什么叫爬虫 python工资高还是java的高
  5. Linux 内核定时器使用 二 高精度定时器 hrtimer 的用例
  6. SQLite3的数据类型转载()
  7. oracle9i新建数据库的用户有哪些,Oracle 9i数据库的用户创造以及权限分配
  8. Linux调用外部服务出现java.net.UnknownHostException
  9. 安装 nodejs 的版本管理工具 (nmv),降低 nodejs 的版本
  10. Unity官方宣传片Adam 播放地址
  11. mysql 获取每天的日期_mysql中获取一天、一周、一月时间数据的各种sql语句写法...
  12. 向前欧拉公式例题_小学语文阅读理解答题万能公式,简单实用!
  13. tomcat架构分析(容器类)
  14. ActiveMQ 依赖JDK版本
  15. 【计算机网络笔记】因特网概述
  16. 5.1(统计正数和负数的个数然后计算这些数的平均值)
  17. python3 模板库 好用_关于3个Python模板库的比较
  18. flask专题-小说网站开发四(完结)
  19. python中输入多个值用什么符号隔开_字典中多个元素之间使用
  20. mysql基础学习--day7

热门文章

  1. logstash的output插件
  2. 关于java.util.Properties读取中文乱码的正确解决方案(不要再用native2ascii.exe了)...
  3. LUCK——组合数学
  4. Webpack实战(五):轻松读懂Webpack如何分离样式文件
  5. 如何将CSS3 transforms应用于背景图像
  6. JavaScript(六)—— DOM 事件高级
  7. 机器/深度学习常见面试问题
  8. JS Addition
  9. 学习php开发步骤,学习php设计模式 php实现模板方法模式
  10. 材料成型过程计算机控制系统,华南理工大学