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

Python 如何使WSGI应用程序可由任何服务器配置?,python,wsgi,Python,Wsgi,是否有一种方法可以分发一个WSGI应用程序,该应用程序可以与任何服务器一起开箱即用,并且只能使用服务器的内置功能进行配置? 这意味着管理员必须接触的唯一配置文件是服务器的配置文件。不需要用Python编写自定义WSGI脚本 mod_wsgi将使用SetEnv设置的配置变量添加到传递给应用程序的wsgi环境字典中,但我没有找到类似于Gunicorn或uWSGI的方法。使用os.environ可以与Gunicorn和uWSGI一起使用,但不能与mod_wsgi一起使用,因为SetEnv不会影响os.

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


mod_wsgi将使用
SetEnv
设置的配置变量添加到传递给应用程序的wsgi环境字典中,但我没有找到类似于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_参数键值、apache中的SetEnv(mod_uWSGI和mod_proxy_uWSGI)、Cherokee的cgi var和uWSGI http路由器的--http var传递其他变量


对于http协议(在gunicorn或uWSGI http套接字中),我想到的唯一解决方案是在代理配置中添加特殊的头,您将在wsgi应用程序中解析这些头(http头被重写为前缀为http的cgi变量)

我知道,但这似乎有点不太正常,不是吗?这是标准实践吗?标准实践是将其写入WSGI容器。你已经决定不想要那个了。事实上,我正试图帮助一个做出这个决定的开源项目。我能理解为什么:这将允许系统管理员在不知道任何Python语法的情况下部署应用程序。也许你的努力会更好地让每个人都使用
环境
。是的,因为这似乎是PEP 333宣传的做法:我很惊讶Gunicorn和uWSGI似乎都不支持它。