从Bottle读取uwsgi_param

时间:2015-08-14 07:13:03

标签: python nginx uwsgi bottle

我有一个在nginx / uwsgi应用程序下运行的python3应用程序。它是一个多环境应用程序,所以我决定为每个环境创建不同的虚拟主机。在每个虚拟主机上,我定义了环境:

uwsgi_param APPLICATION_ENV dev;

但我无法从瓶子里读到,我正在尝试:

request.environ['APPLICATION_ENV']

request.environ.get('APPLICATION_ENV')

我正在尝试其他解决方案,但它们都没有用,我做错了什么?

1 个答案:

答案 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()是默认值。