'one'IOLoop如何处理10k连接?

时间:2012-12-02 10:04:35

标签: asynchronous nginx tornado event-driven

抱歉这个愚蠢的问题,但我真的很困惑;我希望你能在错误的地方纠正我。

基于线程的服务器(如Apache)中,据我所知,每个客户端都会创建一个新的“工作人员”,以满足他的所有需求。

事件驱动(如Nginx和Tornado)中,这引起了我的困惑,特别是在 Python的GIL 非线程安全的情况下强>;根据我的理解,有一个单循环将处理所有客户请求,所以作为我的愚蠢理解,如果有10 000个同时连接,我不知道如何服务所有这10个请求!

1 个答案:

答案 0 :(得分:2)

在事件驱动的服务器中,您只需使用非阻塞调用一个接一个地处理来自特定连接的连接(read()write()。您通常会在连接(select()poll(),...)之间使用一些调用来进行多路复用,它会告诉您需要为哪些连接提供服务,并依次为它们提供服务。