gpt4 book ai didi

Python ThreadingMixin 和 BaseHTTPServer

转载 作者:行者123 更新时间:2023-11-28 16:49:46 28 4
gpt4 key购买 nike

我正在尝试评估各种语言以构建小型高吞吐量应用程序服务器。它需要做一些小事情,比如获取请求、从运行缓存应用程序(memcached、redis)的单独服务器读取数据,以及发回 5 - 10 行 XML 或 JSON。非常高的吞吐量 ~ 至少每秒 1000 个生产。我在 Nginx 上有这个 - PHP 和 memcached 需要 5 毫秒以上才能发回所有必需的数据,因此有一些网络 IO 会阻塞。

我正在查看 Python 的 BaseHTTPServer 类。我不是 python 大师,但我需要知道它在幕后是如何工作的。如果您阅读此页 -

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

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

它真的是异步的还是每个客户端启动一个线程。如果每个客户端模型在一个线程上-这些是操作系统级别的线程吗?如果我坚持每个客户端模型一个线程,如果我给 Python 的 GC 足够快地清除东西,如果我给它高 RAM,8 核亚马逊实例。

最佳答案

ForkingMixIn正如您在源代码中看到的那样,它是一个真正的分支。 ThreadingMixIn使用 Python 线程。所以你必须处理 GIL,这意味着即使它使用底层操作系统线程机制,也不会并发处理你的 python 线程。我不会推荐它用于高吞吐量服务器。

简而言之:,根据您的定义,它们不是异步的。如果您想要“真正的”异步(一个核心/进程/线程)功能,您应该查看:TwistedTornado或者也许 Gunicorn .后者可能也不符合您对异步的定义。

我建议将 torndado 与 nginx 一起使用。有帖子in google groups关于如何设置它。因为内部 Tornado-Server 没有实现所有标准,您可以使用“真实”服务器作为代理。

关于Python ThreadingMixin 和 BaseHTTPServer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8804060/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com