面试题答案
一键面试反应器(Reactor)的作用
Twisted框架中的反应器(Reactor)是整个异步I/O模型的核心。它负责监听多个文件描述符(如套接字)上的事件,包括连接请求、数据到达等。反应器会注册需要监听的对象(如TCP连接)及其对应的事件处理函数。当有事件发生时,反应器会调用相应的处理函数来处理这些事件,从而实现异步操作,避免阻塞。这样可以高效地处理大量并发连接,而不需要为每个连接创建一个独立的线程或进程,提高了系统的性能和资源利用率。
启动一个简单的TCP服务器示例
from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor
class Echo(Protocol):
def dataReceived(self, data):
self.transport.write(data)
def main():
factory = Factory()
factory.protocol = Echo
reactor.listenTCP(8000, factory)
reactor.run()
if __name__ == '__main__':
main()
在上述代码中:
- 定义了一个
Echo
类,它继承自Protocol
,dataReceived
方法用于处理接收到的数据,这里只是简单地将接收到的数据回显给客户端。 - 创建了一个
Factory
对象,并将其protocol
属性设置为Echo
,Factory
用于创建协议实例。 - 使用
reactor.listenTCP(8000, factory)
让反应器监听8000端口,并使用factory
来创建新的连接实例。 - 最后通过
reactor.run()
启动反应器,开始监听事件并处理连接。