我想评估各种语言来构建一个小型高吞吐量应用程序服务器。它需要做一些小的事情,例如获取请求,从运行缓存应用程序的单独服务器(memcached,redis)读取数据,并发回5至10行XML或JSON。非常高的吞吐量~1000每秒生产至少。我在Nginx上有这个--PHP和memcached需要5+毫秒才能发回所有需要的数据,所以有一些网络IO阻塞。Python ThreadingMixin和BaseHTTPServer
我在看Python的BaseHTTPServer类。我不是一个蟒蛇大师,但我需要知道它是如何在幕后工作的。如果您阅读此页 -
http://docs.python.org/library/socketserver.html
它说:“要建立异步处理程序,使用ThreadingMixIn和ForkingMixIn班”。
它真的是异步的,还是它启动一个线程每客户端。如果它在每个客户端模型的一个线程上 - 是这些OS级别的线程?如果我坚持每个客户端模型的一个线程,Python的GC清除速度足够快,如果我给它高RAM,8核心的亚马逊实例。
太好了。做了一些研究。如果您处于这种情况,您会使用哪种技术?我需要将那个Nginx PHP移植到别的东西上。一些内置HTTP服务器的持久应用程序。 – 2012-01-10 14:49:20
独立Py应用程序或Nginx中的Tornado?这个基准显示Nginx + Tornado每秒造成8000+。 http://en.wikipedia.org/wiki/Tornado_%28web_server%29 – 2012-01-10 16:56:44
@Don问题:ThreadingMixin正在使用threading.thread,它是AFAIK一个os级别的线程,在这种情况下它不处理GIL。这将使threadingmixin成为OP的理想选择。 – 2015-01-22 18:56:40