我有一个使用 FastApi 用 Python 编写的基于 api 的 Web 应用程序,它使用Uvicorn或Hypercorn进行部署。它们都是基于 ASGI 的服务器。有没有办法在此之上运行 IIS?
问问题
1959 次
1 回答
2
您可以肯定地通过 IIS 运行。这是您有两种可能的选择(我使用 Hypercorn):
HTTPPlaformHandler
<configuration> <system.webServer> <rewrite> <rules> <rule name="HTTPS force" enabled="true" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="^OFF$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" /> </rule> </rules> </rewrite> <handlers> <add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" /> </handlers> <httpPlatform requestTimeout="00:05:00" startupTimeLimit="120" startupRetryCount="3" stdoutLogEnabled="true" stdoutLogFile=".\logs\python-stdout" processPath="[PATH TO YOUR PYTHON EXE]" arguments="-m hypercorn app.main:app -b 127.0.0.1:%HTTP_PLATFORM_PORT% --keep-alive 5 --worker-class asyncio --workers 9"> <environmentVariables> <environmentVariable name="PORT" value="%HTTP_PLATFORM_PORT%" /> </environmentVariables> </httpPlatform> </system.webServer> </configuration>
AspNetCoreModuleV2(如果你使用这个,你必须有一个 config.py 才能正确绑定 URL 和端口。)
<system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="[PATH TO PYTHON EXE]" arguments="-m hypercorn app.main:app --config file:config.py" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" requestTimeout="00:26:00" /></system.webServer> </location><system.webServer></system.webServer> </configuration>
于 2021-10-27T15:15:00.213 回答