首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python ThreadingMixin和BaseHTTPServer

Python ThreadingMixin和BaseHTTPServer
EN

Stack Overflow用户
提问于 2012-01-10 13:33:01
回答 1查看 8K关注 0票数 3

我试图评估各种语言,以构建一个小规模、高吞吐量的应用服务器。它需要做一些小事情,比如获取请求、从运行缓存应用程序(memcached、redis)的单独服务器读取数据,以及发送5-10行XML或JSON。非常高的吞吐率--每秒1000次--至少在生产中。我在Nginx上有这个问题,memcached使用5+ ms来发送所有所需的数据,所以有一些网络IO阻塞。

我在看Python的BaseHTTPServer类。我不是蟒蛇大师,但我需要知道它在幕后是如何工作的。如果你读了这一页-

http://docs.python.org/library/socketserver.html

它说:“要构建异步处理程序,请使用ThreadingMixIn和ForkingMixIn类。”

它真的是异步的还是每个客户端启动一个线程。如果它在每个客户端模型的一个线程上--这些是OS级别的线程吗?如果我坚持每个客户端模型一个线程,Python的GC是否足够快地清除内容,如果我给它高RAM,8个核心的amazon实例。

EN

回答 1

Stack Overflow用户

发布于 2012-01-10 13:49:27

正如您在源代码中看到的那样,ForkingMixIn做了一个真正的分叉。ThreadingMixIn使用Python线程。因此,您必须处理GIL,这意味着即使它使用底层os-线程机制,也不会对您的python线程进行并发处理。对于高吞吐量的服务器,我不推荐它。

所以简单地说:NO,根据您的定义,它们不是异步的。如果您想要“真正的”异步(一个核心/进程/线程)功能,您应该研究:扭曲的龙卷风,或者可能是古尼坎。后者可能也不符合您对异步的定义。

我建议用牛油果和nginx。有一个关于如何设置它的帖子在谷歌集团中。因为内部旋风服务器没有实现所有的标准,所以您可以使用“真正的”服务器作为代理。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8804060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档