goo*_*ief 1 socketserver python-asyncio
我打算创建可以接收大量连接的Web服务器.这10000个连接用户将发送到服务器号码,服务器将这些平方号码返回给用户.10000个连接太多,异步方法在这里是合适的.我发现Python 3.4的两个库可以帮助:
socketserver和asyncio
使用socketserver库,我们可以使用ThreadingMixIn和ForkingMixIn类作为异步处理程序.但这受到核心数量的限制.另一方面,我们有asyncio库.我不明白它究竟是如何运作的.我应该使用哪一个?这两个图书馆可以一起工作吗?
异步编程有不同的方法.
第一种方法是使用线程监视IO操作,并以非阻塞方式管理这些操作.这是SocketServer做什么的.
第二种方法是使用事件循环和选择器监视主线程中的IO操作.这通常是当他们谈论的异步编程什么人的意思,那就是asyncio,twisted和gevent做.
单线程方法有两个优点:
这是一个asyncio TCP服务器的示例(对于python 3.5).在您的情况下,只需handle_echo用您自己的实现替换协程:
async def handle_client(reader, writer):
data = await reader.readline()
result = int(data.decode().strip()) ** 2
writer.write(str(result)).encode())
writer.close()
Run Code Online (Sandbox Code Playgroud)
它应该能够轻松地处理数千个客户端.
| 归档时间: |
|
| 查看次数: |
1666 次 |
| 最近记录: |