如何使任何服务器可配置WSGI应用程序?
问题描述:
有没有一种方法可以分发WSGI应用程序,这些应用程序可以与任何服务器一起使用,并且只能使用服务器的内置功能进行配置? 这意味着管理员必须接触的唯一配置文件将是服务器的配置文件。不需要在Python中编写自定义的WSGI脚本。如何使任何服务器可配置WSGI应用程序?
mod_wsgi将设置为SetEnv
的配置变量添加到传递给应用的WSGI environ字典中,但是我没有找到与Gunicorn或uWSGI类似的方法。使用os.environ
适用于Gunicorn和uWSGI,但不适用于mod_wsgi,因为SetEnv
不影响os.environ
。
答
environ
和os.environ
都是映射。
servername = environ.get('servername', os.environ.get('servername', 'localhost))
答
在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_)
我知道,但它似乎有点hackish,不是吗?这是标准做法吗? –
标准做法是将其写入WSGI容器。你已经决定你不想要那个。 –
其实我试图帮助做出这个决定的开源项目。我可以理解为什么:它将允许系统管理员在不知道任何Python语法的情况下部署应用程序。 –