Gunicorn: 通过相同的 gunicorn 实例为多个 WSGI 应用程序提供服务的某种方式。

创建于 2010-03-29  ·  7评论  ·  资料来源: benoitc/gunicorn

如果我们有办法通过相同的 gunicorn 实例运行大量应用程序,以便它们使用相同的 Python 解释器,您认为这是一个好主意吗?
至少对我来说,这将非常有用,因为它会节省大量 RAM,因为我有许多小型应用程序(负载非常低)在同一台机器上运行。

Add Example

最有用的评论

我必须同意 jbergstroem 这不属于核心。 但我确实继续添加了一个示例,概述了如何使用 Routes 完成此任务:

http://github.com/benoitc/gunicorn/blob/master/examples/multiapp.py

所有7条评论

我认为这种行为最好由最终用户解决。 与传统的 Web 服务器相比,gunicorn 处理“多个站点”的方式有明显的不同。
我建议使用一些简单的 python 库,比如 werkzeug,让你的两个应用程序响应不同的路由。

我必须同意 jbergstroem 这不属于核心。 但我确实继续添加了一个示例,概述了如何使用 Routes 完成此任务:

http://github.com/benoitc/gunicorn/blob/master/examples/multiapp.py

而不是每个应用程序都有一个特定的挂载点,是否有可能有一个虚拟主机的例子?

是的,这是完全可能的。 您可以编写一个从环境 ['HTTP_HOST'] 到应用程序的简单映射。

我认为这可以用 gunicorn 构建,你怎么看?

这可能是 gunicorn 的一些可选部分,比如贡献的东西,是的。

我认为最好作为具有单独配置的独立多路复用器应用程序。 Django/Paste 专业化也必须去那里。 像这样:

$ gunicorn wsgi_multi django:project1 myblog.wsgi:wsgi_app anotherapp.foo

在这里,gunicorn 只运行一个应用程序 wsgi_multi,其他参数通过一些特殊的 API 传递给它。 或者通过配置或其他方式。

我花了很多时间试图写出类似于这张票中建议的内容。 首先,我尝试使用基于 HTTP_HOST 切换 virtualenv 的代码。 原来你真的不能在纯 python 中停用 virtualenvs,所以这是一个洗涤。

然后我想:也许我们可以只要求它是一个单一的 virtualenv,所以我编写了基于 HTTP_HOST 切换到不同 WSGI 应用程序的代码,结果发现你不能并排运行两个 django 应用程序,因为 django 保留了一个到处都有数量惊人的全局变量。

所以基本上,我要说的是它并不像上面建议的那样容易甚至可行。

也许做某种负载平衡的事情更可行,其中工作人员根据应用程序在不同的虚拟环境中运行,并且中央 gunicorn master 确保需要更多工作人员的应用程序得到它们? 写起来可能并不容易或有趣:(

我真的很想清理 django 以使这种事情成为可能......

此页面是否有帮助?
0 / 5 - 0 等级