如何使任何服务器可配置WSGI应用程序?

问题描述:

有没有一种方法可以分发WSGI应用程序,这些应用程序可以与任何服务器一起使用,并且只能使用服务器的内置功能进行配置? 这意味着管理员必须接触的唯一配置文件将是服务器的配置文件。不需要在Python中编写自定义的WSGI脚本。如何使任何服务器可配置WSGI应用程序?

mod_wsgi将设置为SetEnv的配置变量添加到传递给应用的WSGI environ字典中,但是我没有找到与Gunicorn或uWSGI类似的方法。使用os.environ适用于Gunicorn和uWSGI,但不适用于mod_wsgi,因为SetEnv不影响os.environ

environos.environ都是映射。

servername = environ.get('servername', os.environ.get('servername', 'localhost)) 
+0

我知道,但它似乎有点hackish,不是吗?这是标准做法吗? –

+0

标准做法是将其写入WSGI容器。你已经决定你不想要那个。 –

+0

其实我试图帮助做出这个决定的开源项目。我可以理解为什么:它将允许系统管理员在不知道任何Python语法的情况下部署应用程序。 –

在uWSGI

(如果使用uwsgi协议),则可以通过另外的变量与nginx的uwsgi_param密钥值,在SETENV阿帕奇(二者mod_uwsgi和mod_proxy_uwsgi),CGI与切诺基VAR和--http-VAR与uwsgi http路由器。

对于http协议(在gunicorn或uWSGI http-socket中),我脑海中唯一弹出的解决方案是在代理配置中添加特殊的头文件,您将在您的wsgi应用程序中解析(http头被重写为带有前缀的cgi vars HTTP_)