Я следовал этому руководству, чтобы обслуживать приложение Flask из IIS:
https://medium.com/@bilalbayasut/deploying-python-web-app-flask-in-windows-server-iis-using-fastcgi-6c1873ae0ad8
В настоящее время мой исходный код выглядит следующим образом:
MyApp.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, используя os.getenv()
, то же самое нельзя сказать о ключах, добавленных в secrets.config;изменение строки return "PYTHONPATH: {0}".format(os.getenv('PYTHONPATH'))
на return "PYTHONPATH: {0}".format(os.getenv('SECRETTHING'))
возвращает «None», а не «THING».
Почему я не могу получить доступ к этим envars?