python socketserver_Python2.7 SocketServer

该模块是一个简单的网络服务器模块。它由四个基本的服务器类组成:TCPServer、UDPServer、UnixStreamServer、UnixDatagramServer。这四个类都是同步请求,只有一个请求完全处理完成后,下一个请求才会被处理,这样的模式不适合每个请求要花费很长时间的情况。该方法为每个请求生成单独的进程或者线程,ForkingMixIn和ThreadingMixIn类可以提供异步的处理框架。

创建一个服务请求需要几步:

1  先创建一个请求句柄,可以使用BaseRequestHandler类来创建,然后重写该类的handle()方法。这个方法会处理进来的请求

2  实例化一个服务器类,绑定服务器的地址

3  调用handle_request()或者serve_forever()方法处理一个或者多个请求。

下面表示几个类的继承关系

+------------+

| BaseServer |

+------------+

|

v

+-----------+ +------------------+

| TCPServer |------->| UnixStreamServer |

+-----------+ +------------------+

|

v

+-----------+ +--------------------+

| UDPServer |------->| UnixDatagramServer |

+-----------+ +--------------------+

class SocketServer.BaseServer

该类是所有server类的超类,他定义了接口,但是没有定义方法的实现,方法可以在子类中实现。

BaseServer.fileno()

返回一个整数的文件描述符,表示那个服务器在监听,一般和select.select()配合使用,允许在一个进程中监视多个servers

BaseServer.handle_request()

处理单个请求,这个调用以下方法: get_request(), verify_request(),process_request()

BaseServer.serve_forever(poll_interval=0.5)

请求句柄直到收到一个明确的shutdown()请求。他会忽略self.timeout

BaseServer.shutdown()

告诉 serve_forever()停止循环

BaseServer.address_family

服务的socket属于哪个协议族

BaseServer.RequestHandlerClass

用户提供一个请求句柄,

BaseServer.server_address

服务监听在那个地址

BaseServer.socket

在socket对象上,服务监听进来的请求

BaseServer.allow_reuse_address

是否允许重用地址,默认False

BaseServer.request_queue_size

请求队列大小,默认是5

BaseServer.socket_type

socket类型

BaseServer.timeout

超时时间,默认以秒为单位,None表示没有设置

可以被子类重写的方法:

BaseServer.finish_request()

BaseServer.get_request()

BaseServer.handle_error(request, client_address)

BaseServer.handle_timeout()

BaseServer.process_request(request, client_address)

BaseServer.server_activate()

BaseServer.server_bind()

BaseServer.verify_request(request, client_address)

RequestHandler.finish()

RequestHandler.handle()

RequestHandler.setup()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值