我已经用 python 和 wfastcgi.py 配置了 IIS,主要是让它工作。尝试使用简单的东西时,它会返回预期的内容。
我现在的问题是使用属性路由在 IIS 下获取烧瓶和绘图/破折号。
我的 web.config 如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python36\python.exe|C:\Python36\Scripts\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
<appSettings>
<!-- Required settings -->
<add key="WSGI_HANDLER" value="index.wsgi_app" />
<add key="PYTHONPATH" value="C:/inetpub/wwwroot/python/venv/Scripts/python36.zip;C:/inetpub/wwwroot/python/venv/DLLs;C:/inetpub/wwwroot/python/venv/lib;C:/inetpub/wwwroot/python/venv/Scripts;c:/python36/Lib', 'c:/python36/DLLs;C:/inetpub/wwwroot/python/venv;C:/inetpub/wwwroot/python/venv/lib/site-packages" />
<!-- Optional settings -->
<add key="WSGI_LOG" value="C:\temp\my_app.log" />
<add key="WSGI_RESTART_FILE_REGEX" value=".*((\.py)|(\.config))$" />
<add key="APPINSIGHTS_INSTRUMENTATIONKEY" value="__instrumentation_key__" />
<add key="WSGI_PTVSD_SECRET" value="__secret_code__" />
<add key="WSGI_PTVSD_ADDRESS" value="ipaddress:port" />
</appSettings>
</configuration>
我创建了一个 index.py 文件,当我使用
from flask import Flask
from SimpleDash1 import app as sd1
from WebAppExampleA import app as waea
app = Flask(__name__)
@app.route("/")
def hello():
response = ["Hello, world!\n"]
return (line.encode("utf-8") for line in response)
def wsgi_app(environ,start_response):
start_response('200 OK', [('Content-type', 'text/html'), ('Content-encoding', 'utf-8')])
return hello()
if __name__ == "__main__":
app.run()
它工作正常,但它并不能完全满足我的情节应用程序。为了尝试加载我的 plotly 应用程序,我使用了这个:
from dash.dependencies import Input, Output
import dash_core_components as dcc
import dash_html_components as html
from app import app
from apps import web_example_a
app.layout = html.Div([
dcc.Location(id='url', refresh=False),
html.Div(id='page-content')
])
@app.callback(Output('page-content', 'children'),
[Input('url', 'pathname')])
def display_page(pathname):
if pathname == '/apps/web_example_a':
return web_example_a.layout
#elif pathname == '/apps/app2':
# return app2.layout
else:
return '404'
if __name__ == '__main__':
app.run_server(debug=True)
但是现在我很困惑我需要在 web.config 中将哪个入口点配置为我的 WSGI_HANDLER。如果我尝试将 WSGI_HANDLER 更改为“index.display_page”,我会收到一条错误消息:
发生了错误:
回溯(最后一次调用):文件“C:\Python36\Scripts\wfastcgi.py”,第 849 行,主要用于部分结果:文件“C:\python36\lib\site-packages\applicationinsights\requests\WSGIApplication .py”,第 70 行,调用 self._wsgi_application(environ, status_interceptor):文件“C:\python36\lib\site-packages\dash\dash.py”,第 498 行,在 add_context output_value = func( *args, **kwargs) TypeError: display_page() 接受 1 个位置参数,但给出了 2 个
标准输出:
标准错误:C:\python36\lib\site-packages\plotly\tools.py:103:用户警告:
看起来您对“主”(“~”)目录或我们的“~/.plotly”目录没有“读写”权限。这意味着 plotly 的 python api 无法设置本地配置文件。不过没问题!您只需使用“plotly.plotly.sign_in()”登录。寻求帮助:“帮助(plotly.plotly.sign_in)”。问题?访问 https://support.plot.ly