读书人

Twisted服务器开发技艺(3)

发布时间: 2012-09-12 09:21:30 作者: rapoo

Twisted服务器开发技巧(3)

问题详见:Twisted服务器优化专题

第三种方法是使用经典的服务器模型的select(epoll)异步I/O。使用twisted框架中的reactor(epoll/select)+reader,将磁盘I/O封装为reader,交给reactor来管理,磁盘I/O完成后调用回调函数将数据返回发送改请求的客户端。这样既不会因为I/O阻塞请求处理线程也不会如方法二一样因为I/O阻塞读取线程,详见下图:

Twisted服务器开发技艺(3)

reactor(epoll/select)+ reader的方法需要继承abstract.FileDescriptor并且实现其几个方法,而twisted框架中的网络(TCP/UDP)、标准I/O、进程都有类似的实现。使用时传入文件描述符,如下:

def _disconnectSelectable(self, selectable, why, isRead, faildict={    error.ConnectionDone: failure.Failure(error.ConnectionDone()),    error.ConnectionLost: failure.Failure(error.ConnectionLost())}):            ...            selectable.connectionLost(f)            ...


-----摘自posixbase.py


读书人网 >其他相关

热点推荐