[英]Which Python library should I use? SocketServer or Asyncio?
我將創建可以接收大量連接的 Web 服務器。 這 10000 個連接的用戶將發送到服務器號碼,服務器將這些平方數返回給用戶。 10000 個連接太多了,這里使用異步方法是合適的。 我找到了兩個適用於 Python 3.4 的庫,它們可以提供幫助:
套接字服務器和異步
使用 socketserver 庫,我們可以使用 ThreadingMixIn 和 ForkingMixIn 類作為異步處理程序。 但這受到內核數量的限制。 另一方面,我們有 asyncio 庫。 我不明白它到底是如何工作的。 我應該使用哪一種? 這兩個庫可以一起工作嗎?
異步編程有不同的方法。
第一種方法是使用線程來監控 IO 操作,並以非阻塞方式管理這些操作。 這就是SocketServer
所做的。
第二種方法是使用事件循環和選擇器來監視主線程中的 IO 操作。 這通常是人們談論異步編程時的意思,這就是asyncio
、 twisted
和gevent
所做的。
單線程方法有兩個優點:
這是asyncio TCP 服務器的示例。 在您的情況下,只需用您自己的實現替換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()
它應該能夠輕松處理數以千計的客戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.