我最近才开始使用基于 Python WSGI 的框架(Pyramid 和 Flask)。从那以后我一直在使用 Apache,但最近我对 node.js 和 Nginx 等基于异步非阻塞事件的技术大肆宣传。
所以我决定,当我的应用程序投入生产时,它会在 Nginx 上的虚拟云服务器中运行,它会超级、超级快……但比我想象的要快……等一下……wsgi应用程序是设计上的阻塞应用程序。那么 wsgi 应用程序在 Nginx 上的运行实际上不会比 Apache 更差,因为它会阻塞进程并立即阻塞服务器?Apache 的多线程可能比我的应用程序要好得多。
无论如何,现在我正试图弄清楚我将在生产中使用什么,所以我可以以这种方式进行准备和优化。我在这个领域几乎是新手,所以我有一些想法,但我不确定该采取什么路线。
1.) Have nginx serve my wsgi app, but create some kind of load balancer that sends requests to various nginx instances, as running single process would probably fail miserably as my python app would be blocking it. So I would have 4-8 nginx's running.
2.) Have apache serve everything, wsgi+static
3.) Have apache serve the app via mod_wsgi, and nginx serve static files
4.) Any other solutions?
我正在寻找性能、资源使用、可靠性和便利性之间的最佳平衡。如果配置正确,我认为 nginx 或 apache 都不会成为我的应用程序的瓶颈。
谢谢