在Windows/IIS的反向代理下设置WSGI多个进程和进程回收?
我之前在IIS上部署过CPython应用,使用的是isapi-wsgi,在一些情况下效果不错。
不过在我现在的项目中,使用isapi-wsgi遇到了麻烦:Windows Server 2008 R2、64位Python和pyodbc模块的组合不太好用,除非我重新编译pyodbc模块(至少这是我花了半小时在网上查资料得出的结论)。
所以,我决定在这个项目中尝试另一种在Windows上部署WSGI的方法。
我的计划是:
- 配置IIS网页服务器进行反向代理(使用IIS的应用请求路由)
- 将一个Python进程作为Windows服务来处理从IIS转发过来的请求,就像Pylons项目中的这个例子那样
我有几个问题:
- 如果我的Python进程能启动多个长时间运行的请求处理进程,并且能自动分配请求给它们,那就太好了。
- 如果这些Python请求处理进程能在处理一定数量的请求后自动回收,那就更好了。
- 有没有人能给我一些实现以上目标的建议?
1 个回答
2
我之前成功使用过Paste和CherryPy。Paste目前不支持Python 3,而且未来也不太可能会支持。如果你在意Python 3的话,可能需要考虑其他的选择,而不是Paste。
我也尝试过用Twisted作为WSGI服务器来提供服务。这种方法是可行的,但我从来没有把它投入生产使用,因为我觉得它没有比我已经在用的东西带来我想要的好处。
我对Werkzeug的服务器不太熟悉,所以不太敢评论它在生产环境中是否可靠,或者说不使用它是否意味着不使用反向代理。
从根本上说,任何在Windows上运行的知名WSGI服务器,可能在某种标准下都是“最好”的选择,这个“最好”是根据你的需求来定的。