flask - Windows Server 上的 2 个 IIS Flask 站点 - 仅运行 1 个
问题描述
Windows Server 数据中心 2019 Python 3.7.6
我在 IIS 上配置了 2 个站点。
mysite1 端口 9090:使用 VSCode 运行并在浏览器中输入 URL
- 从 VSCode 运行
- 在浏览器中输入网址:###.###.###.###:9090
mysite2 端口 9566:仅从 VSCode 运行
- 从 VScode 运行。
- 错误 500。在浏览器中输入 URL:###.###.###.###:9566 也来自 IIS 管理器菜单选项:浏览 *:9566
HTTP 错误 500.0 - 内部服务器错误
C:\inetpub\wwwroot\Flask\mysite2\venv\Scripts\python.exe - FastCGI 进程意外退出
详细错误信息:
模块 FastCgiModule
通知 ExecuteRequestHandler
处理程序 Python FastCGI
错误代码 0x00000067
请求的 URL http://localhost:9566/
物理路径 C:\inetpub\wwwroot\Flask\mysite2
登录方法匿名
登录用户匿名
2 个站点配置了不同的 AppPools
2 个 web.config 文件
<configuration>
<system.webServer>
<handlers>
<remove name="FlaskHandler" />
<add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\inetpub\wwwroot\Flask\mysite1\venv\Scripts\python.exe|C:\inetpub\wwwroot\Flask\mysite1\venv\lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
<appSettings>
<add key="WSGI_HANDLER" value="app.app" /> <!-- {name_of_file}.{name_of_flask_app}-->
<add key="PYTHONPATH" value="C:\inetpub\wwwroot\Flask\mysite1" />
<add key="WSGI_LOG" value="C:\inetpub\wwwroot\Flask\mysite1\app.log" />
</appSettings>
</configuration>
<configuration>
<system.webServer>
<handlers>
<remove name="FlaskHandler" />
<add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\inetpub\wwwroot\Flask\mysite2\venv\Scripts\python.exe|C:\inetpub\wwwroot\Flask\mysite2\venv\lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
<appSettings>
<add key="WSGI_HANDLER" value="app.app" /> <!-- {name_of_file}.{name_of_flask_app}-->
<add key="PYTHONPATH" value="C:\inetpub\wwwroot\Flask\mysite2" />
<add key="WSGI_LOG" value="C:\inetpub\wwwroot\Flask\mysite1\app.log" />
</appSettings>
</configuration>
使用相同的步骤创建 mysite1 和 mysite2。
在 IIS 管理器中,我停止了 mysite1,但 mysite2 没有在浏览器中使用输入 URL 运行。
帮助表示赞赏 1
更多调试
- 我打开了失败的请求跟踪
这些是错误和警告跟踪的日志消息
94. FASTCGI_UNEXPECTED_EXIT
Error
95. SET_RESPONSE_ERROR_DESCRIPTION 22:01:34.515
Warning
ErrorDescription="C:\inetpub\wwwroot\Flask\mysite2\venv\Scripts\python.exe - The FastCGI process exited unexpectedly" 22:01:34.515
96. MODULE_SET_RESPONSE_ERROR_STATUS
Warning
ModuleName="FastCgiModule", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="500", HttpReason="Internal Server Error", HttpSubStatus="0", ErrorCode="The semaphore cannot be set again.
(0x67)", ConfigExceptionInfo=""
调试帖子:IIS 上的 Python 烧瓶应用程序无法在 Windows Server 2019 上运行
我不明白运行 wfastcgi.py 的作用,但 mysite1 和 mysite2 的行为方式相同。
The "working" site, runs and does not end
C:\inetpub\wwwroot\Flask\RESTAPI_mysite1\venv\Scripts\python.exe C:\inetpub\wwwroot\Flask\mysite1\venv\lib\site-packages\wfastcgi.py
The "non-working" site, runs and does not end
C:\inetpub\wwwroot\Flask\RESTAPI_mysite2\venv\Scripts\python.exe C:\inetpub\wwwroot\Flask\mysite2\venv\lib\site-packages\wfastcgi.py
这些建议不适用于 mysite2。
帮助表示赞赏 2
解决方案
应用程序池很奇怪。也许 site1 应用程序池的一些特殊设置是未知的。即使您手动创建新池,这些设置也不会在新池中配置。
尝试使用 appcmd 将 site1 池复制到新池。(首先停止 site1 池)
- 以管理员身份运行命令行。
CD C:\Windows\System32\inetsrv
appcmd.exe list apppool "site1 pool name" /config /xml > D:\AppPoolConfig.xml
appcmd.exe add apppool /name:new pool name /in < D:\AppPoolConfig.xml
然后在 IIS 管理器中启动新池。让 site2 工作。
推荐阅读
- ios - 将无法识别的选择器作为按钮发送到集合视图单元格的实例,该按钮将数据从按钮发送到另一个视图控制器
- vb.net - 如何以编程方式在 vb.net(visual basic) 中导入 DLL 文件?
- android - 不同风格的文本 PC 和智能手机
- python - 如何在手机屏幕中为“tinymce”设置小图标大小?
- python - 当从 csv 复制到“id”列中的空值时,复制命令不更新 Id_sequence 列违反非空约束
- react-native - 在 React Native 中更改目标元素的值
- reactjs - ReactJS:无法对未安装的组件执行 React 状态更新
- hibernate - 未调用实体侦听器
- kotlin - 使用在 Kotlin 中不起作用的格式对数字进行舍入
- javascript - hbs 没有在 node.js 中定义?