首页 > 解决方案 > 如何从单独的机密配置文件访问由 wfastcgi 设置的环境变量

问题描述

我已按照本指南从 IIS 提供 Flask 应用程序:

https://medium.com/@bilalbayasut/deploying-python-web-app-flask-in-windows-server-iis-using-fastcgi-6c1873ae0ad8

我目前的源代码如下:

我的应用程序.py:

from flask import Flask
import os
app = Flask(__name__)

@app.route("/")
def hello():

    return "PYTHONPATH: {0}".format(os.getenv('PYTHONPATH'))

if __name__ == "__main__":
    app.run()

还有我的 web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appSettings file='C:\app_secrets\secrets.config' >
        <add key="PYTHONPATH" value="C:\inetpub\wwwroot\MyApp" />
        <add key="WSGI_HANDLER" value="MyApp.app" />
    </appSettings>
</configuration>

我遵循互联网上许多地方的建议,通过在源代码之外有一个单独的 appSettings 文件并在 web.config 中引用它来填充秘密,所以“C:\app_secrets\secrets.config”看起来像这个:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appSettings>
        <add key="SECRETTHING" value="THING" />
    </appSettings>
</configuration>

我发现虽然 web.config<add key=...位按我预期的那样工作,并且我可以在 MyApp.py 中使用它们访问它们,但在 secrets.config 中os.getenv()添加的密钥却不是这样;将行更改return "PYTHONPATH: {0}".format(os.getenv('PYTHONPATH'))return "PYTHONPATH: {0}".format(os.getenv('SECRETTHING'))返回“None”而不是“THING”。

为什么我无法访问这些 envars?

标签: pythoniisflaskweb-configfastcgi

解决方案


推荐阅读