我有一个在nginx / uwsgi应用程序下运行的python3应用程序。它是一个多环境应用程序,所以我决定为每个环境创建不同的虚拟主机。在每个虚拟主机上,我定义了环境:
uwsgi_param APPLICATION_ENV dev;
但我无法从瓶子里读到,我正在尝试:
request.environ['APPLICATION_ENV']
或
request.environ.get('APPLICATION_ENV')
我正在尝试其他解决方案,但它们都没有用,我做错了什么?
答案 0 :(得分:0)
我找到了解决方案。
重要的是要知道在请求完成后将加载uwsgi_params,所以这就是为什么每次执行request.environ我都没有得到uwsgi值。如果我将此行移至@ app.route,则可以正常工作。
所以,为了解决这个问题,我在我的uwsgi_app.ini文件中添加了一个uswgi变量:
env = APPLICATION_ENV=dev
然后在你的python代码中,在app.run()之前,你可以得到变量APPLICATION_ENV,如下所示:
import os
application_env = os.getenv('APPLICATION_ENV', socket.gethostname())
如果找不到APPLICATION_ENV,则socket.gethostname()是默认值。