Python网络编程篇之socketserver

发表于:2017-11-28 09:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:gregory2017    来源:博客园

分享:
  3.class socketserver.BaseServer(server_address, RequestHandlerClass) 主要有以下方法
  类socketserver.BaseServer(server_address,RequestHandlerClass)
  这是模块中所有服务器对象的超类。它定义了下面给出的接口,但不实现大多数在子类中完成的方法。这两个参数存储在相应的server_address和RequestHandlerClass属性中。
  fileno()
  返回服务器正在侦听的套接字的整数文件描述符。这个函数通常被传递给选择器,允许在同一个进程中监视多个服务器。
  handle_request()
  处理一个请求。该函数按顺序调用以下方法:get_request(),verify_request()和process_request()。如果处理程序类的用户提供的handle()方法引发异常,则将调用服务器的handle_error()方法。如果在超时秒内没有收到请求,则会调用handle_timeout(),并返回handle_request()。
  serve_forever(POLL_INTERVAL = 0.5)
  处理请求直到显式关闭()请求。轮询关闭每个poll_interval秒。忽略超时属性。它还调用service_actions(),子类或mixin可以使用它来提供特定于给定服务的操作。例如,ForkingMixIn类使用service_actions()来清理僵尸子进程。
  在版本3.3中进行了更改:将service_actions调用添加到了serve_forever方法。
  service_actions()
  这在serve_forever()循环中被调用。这个方法可以被子类或mixin类覆盖,以执行特定于给定服务的操作,例如清理操作。
  3.3版本中的新功能
  shutdown()
  告诉serve_forever()循环停止并等待,直到它结束。
  server_close()
  清理服务器。可能会被覆盖。
  address_family
  服务器套接字所属的协议族。通常的例子是socket.AF_INET和socket.AF_UNIX。
  RequestHandlerClass
  用户提供的请求处理程序类;这个类的一个实例是为每个请求创建的。
  server_address
  服务器正在侦听的地址。地址格式因协议族而异,有关详细信息,请参阅套接字模块的文档。对于Internet协议,这是一个包含给出地址的字符串的元组,以及一个整数端口号:('127.0.0.1',80)。
  socket
  服务器将侦听传入请求的套接字对象。
  服务器类支持以下类变量:
  allow_reuse_address
  服务器是否允许重用地址。这默认为False,可以在子类中设置来更改策略。
  request_queue_size
  请求队列的大小。如果处理单个请求需要很长时间,则在服务器繁忙时到达的所有请求都会被放入一个队列中,最多为request_queue_size请求。一旦队列已满,来自客户端的进一步请求将会得到“连接被拒绝”错误。默认值通常是5,但这可以由子类覆盖。
  socket_type
  服务器使用的套接字的类型; socket.SOCK_STREAM和socket.SOCK_DGRAM是两个常见的值。
  timeout
  超时持续时间(以秒为单位);如果不需要超时,则超时。如果handle_request()在超时期限内没有收到传入的请求,则调用handle_timeout()方法。
  有许多服务器方法可以被TCPServer等基本服务器类的子类覆盖;这些方法对服务器对象的外部用户没有用处。
  finish_request()
  实际上通过实例化RequestHandlerClass并调用其handle()方法来处理请求。
  get_request()
  必须接受来自套接字的请求,并返回包含要用于与客户端通信的新套接字对象的2元组以及客户端的地址。
  handle_error(request,client_address)
  如果RequestHandlerClass实例的handle()方法引发异常,则调用此函数。默认操作是将回溯打印到标准输出,并继续处理更多的请求。
  handle_timeout()
  当timeout属性被设置为None以外的值时,该函数被调用,超时时间已经过去,没有收到请求。派生服务器的默认动作是收集退出的任何子进程的状态,而在线程服务器中,这个方法什么也不做。
  process_request(request,client_address)
  调用finish_request()来创建RequestHandlerClass的一个实例。如果需要,这个函数可以创建一个新的进程或线程来处理请求; ForkingMixIn和ThreadingMixIn类都是这样做的。
  server_activate()
  由服务器的构造函数调用以激活服务器。 TCP服务器的默认行为只是在服务器套接字上调用listen()。可能会被覆盖。
  server_bind()
  由服务器的构造函数调用,将套接字绑定到所需的地址。可能会被覆盖。
  verify_request(request,client_address)
  必须返回一个布尔值;如果值为True
22/2<12
2023测试行业从业人员调查问卷已开启,千元大奖正在等你~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号