- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试评估各种语言以构建小型高吞吐量应用程序服务器。它需要做一些小事情,比如获取请求、从运行缓存应用程序(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 线程。我不会推荐它用于高吞吐量服务器。
简而言之:不,根据您的定义,它们不是异步的。如果您想要“真正的”异步(一个核心/进程/线程)功能,您应该查看:Twisted或 Tornado或者也许 Gunicorn .后者可能也不符合您对异步的定义。
我建议将 torndado 与 nginx 一起使用。有帖子in google groups关于如何设置它。因为内部 Tornado-Server 没有实现所有标准,您可以使用“真实”服务器作为代理。
关于Python ThreadingMixin 和 BaseHTTPServer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8804060/
我正在尝试评估各种语言以构建小型高吞吐量应用程序服务器。它需要做一些小事情,比如获取请求、从运行缓存应用程序(memcached、redis)的单独服务器读取数据,以及发回 5 - 10 行 XML
我已经对两个服务器进行了编程,它们基本上使用不同的方法执行相同的操作。两者都是网络服务器,在套接字对象周围有一个非阻塞的 ssl 包装器。线程允许同时处理多个请求。 一个使用 ThreadingTCP
在异步(线程)SocketServer 的例子中http://docs.python.org/2/library/socketserver.html服务器线程(称为 server_thread)启动,
我已在 this post 上阅读此处使用 ThreadingMixin(来自 SocketServer 模块),您可以使用 BaseHTTPServer 创建线程服务器。我试过了,它确实有效。但是,
我正在用 Python 编写多人游戏服务器和客户端,使用内置的 SocketServer 的 TCPServer 和 ThreadingMixIn,因为它似乎比手动管理套接字和线程模块更容易。 (我想
我试图使用基于 SocketServer 的 BaseHttpServer 创建一个 http 代理它有 2 个异步 Mixin(ThreadingMixIn 和 ForkingMixIn) 他们处理
我尝试使用 Python 中的线程 (ThreadingMixIn) 编写 TCPServer。问题是我无法正确关闭它,因为当我再次尝试运行时出现 socket.error: [Errno 48] A
我是一名优秀的程序员,十分优秀!