具有非阻塞体系结构的Python web服务器选项

具有非阻塞体系结构的Python web服务器选项,python,twisted,tornado,c10k,Python,Twisted,Tornado,C10k,我正在寻找一个基于Python的非阻塞web服务器环境,该环境设计用于处理大量同时连接,并在重负载下响应()。我需要它作为我的webapp的后端。在一个典型的场景中,webapp客户端将使用WebSocket对服务器进行多次调用 到目前为止,我在pythonland中找到了两种选择 python之外当然有node.js,但如果可能的话,我更喜欢python编码环境 你会推荐上面两个(或其他我不知道的)中的哪一个?利与弊是什么?或者我应该通过为web.py编写一些非阻塞前端来实现自己的框架

我正在寻找一个基于Python的非阻塞web服务器环境,该环境设计用于处理大量同时连接,并在重负载下响应()。我需要它作为我的webapp的后端。在一个典型的场景中,webapp客户端将使用WebSocket对服务器进行多次调用

到目前为止,我在pythonland中找到了两种选择

python之外当然有node.js,但如果可能的话,我更喜欢python编码环境

你会推荐上面两个(或其他我不知道的)中的哪一个?利与弊是什么?或者我应该通过为web.py编写一些非阻塞前端来实现自己的框架


我担心的是,尽管上述两个项目似乎都得到了很好的社区支持,但它们并不像Django、CherryPy、Pylon等那样成为主流。因此,我担心做出的选择可能会导致未来的支持率低下。

有更多的好选择。您应该查看Nicolas Piel的一篇文章。

作为核心Twisted开发人员之一,我强烈建议您使用Twisted.)

首先,因为它是一个拥有开发团队的优秀库。Twisted提供了一系列极其广泛的功能,从一个到数据库集成(基于Twisted本身的线程或在或中无线程的线程,单独分发)到支持其他协议,如FTP、DNS、XMPP、SMTP以及许多其他协议。对

第二,因为它是大型网络服务器的一个很好的解决方案,就像您在Python中看到的一样。由于您对C10K很熟悉,我不认为我需要对此进行详细阐述。只需说一句,反复扭在一起处理


第三,因为有一个大型、活跃的社区,它提供了很多支持选项,不会很快消失。将邮件列表、IRC频道和stackoverflow放在一起,就不乏寻求帮助的方法。

虽然我对Nicholas在整理这篇评论时所做的努力表示赞赏,但它的绩效结果却极其偏向于一个特定的、高度不切实际的工作负载。当然,我非常不高兴这个特定的工作负载对Twisted的处理特别糟糕,但我看不出我们可以做多少来提高基准测试中的性能,但不能与其他更现实的情况(例如,不适合单个
write()的响应)相比
call,甚至是单个TCP段)。(我还应该注意,它实际上并没有对任何异步web请求进行基准测试;每个服务器都只是通过编写一个静态字符串进行响应,因此这是纯I/O延迟的基准测试,而不是这些框架中的HTTP请求处理。)@铭文:你有没有性能数据可以放在一个更有利的角度?我在一个项目中使用Twisted,希望看到故事的两面。