我一直在研究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? - 还有其他吗?
答案 0 :(得分:2)
我很幸运使用了CherryPy Web服务器,这是最古老,最实用的纯Python Web服务器之一。只需将您的应用程序编写为WSGI可调用,并且应该很容易在CherryPy的多线程服务器下运行。
答案 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()