Python HTTP Server可用于多个请求

时间:2011-10-02 22:49:26

标签: python httpserver

我一直在研究BaseHTTPServer,并发现它不适合多个请求。我仔细阅读了这篇文章 http://metachris.org/2011/01/scaling-python-servers-with-worker-processes-and-socket-duplication/#python

我想知道为多个请求构建HTTP Server的最佳方法是什么 - >

我对HTTP Server的要求很简单 - - 支持多个请求(每个请求可以运行LONG Python脚本)

直到现在我有以下选项 - > - BaseHTTPServer(线程不好) - Mod_Python(Apache集成) - CherryPy? - 还有其他吗?

3 个答案:

答案 0 :(得分:2)

我很幸运使用了CherryPy Web服务器,这是最古老,最实用的纯Python Web服务器之一。只需将您的应用程序编写为WSGI可调用,并且应该很容易在CherryPy的多线程服务器下运行。

http://www.cherrypy.org/

答案 1 :(得分:1)

实际上,标准python库提供的HTTP服务器仅用于轻型工作;对于中等缩放(100个并发连接),apache中的mod_wsgi是一个很好的选择。

如果您的需求大于(10,000个并发连接),您将需要查看异步框架,例如Twisted或Tornado。异步应用程序的一般结构是完全不同的,所以如果你认为你可能需要沿着那条路走下去,你一定要从一开始就在其中一个框架中启动你的项目

答案 2 :(得分:1)

Tornado是一个非常好且易于使用的异步事件循环/网络服务器,由FriendFeed / Facebook开发。我个人有非常好的经验。您可以使用下面示例中的HTTP类,也可以仅使用io-loop来复用纯TCP连接。

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.current().start()