python - 在 Azure Web Apps 中设置 Python 服务器

标签 python azure flask azure-web-app-service

我正在寻找一种易于理解的方法来配置 Flask 应用程序以在 Azure Web Apps 上运行。我希望能够让环境尽可能接近原始环境,尽管我知道使用现成的服务会带来一些要求。

我对本地设置的欣赏之处是:

  • 只需运行 .py 脚本即可通过 Waitress 运行服务器的简单方法
  • 将我的文件作为可导入的“开发”包,提供一种没有路径操作但位于文件系统中任意位置的情况 (pip install -e ./)

使用 Flask 设置并启动应用程序非常容易。这是我最简单的app.py

from flask import Flask

app = Flask(__name__)


@app.route('/')
def main():
    return 'Hi.'


if __name__ == '__main__':
    app.run('0.0.0.0', 5000)

现在是这个guide关于如何在 Azure 中建立 Python 网站。我认为它有很多不必要的步骤,从单独的服务器下载轮子,修改 os.path 来导入库并使用 virtualenv。不要误会我的意思:virtualenv 很有用,但我只是尝试将流程精简到最低限度。此外,至少对我来说,virtualenv 激活脚本不起作用。

另一个guide ,这次微软自己表示 Windows 开发人员应该转向适用于 Linux 的 Azure Web App。但目前,我只能使用 Windows 应用程序。他们提供一些配置帮助。

提供了 Python 安装。它奇怪地位于 D:\home 中,并且它的解释器无法使用简单的 python 命令启动。安装库是可行的:python -m pip install lib。配置文件应该从一些 Visual Studio 模板构建,至少我的 Visual Studio 找不到。所以我现在填写的第一个指南是

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
  <handlers>
    <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule"
        scriptProcessor="D:\home\Python364x64\python.exe|D:\home\Python364x64\wfastcgi.py"
        resourceType="Unspecified" requireAccess="Script"/>
  </handlers>
</system.webServer>
</configuration>

应根据文档在某处添加另一行。不过,目前还不清楚具体在哪里。

<add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>

所以我想知道的是:

  • 运行这个最小的应用程序需要执行哪些最少步骤?
  • 我可以运行自己的服务器吗?几个使用不同的端口怎么样?

最佳答案

对于你的第一个问题,你可以引用我对其他现有SO线程的回答Hosting Flask(Python) app throws CGI error运行最小的 Flask 应用程序。您的代码中有一个问题,由 wfastcgi.py 启动使用app.run() ,不要使用app.run('<ip or host for listening>', '<a port you want>') 。在 Azure 上,IIS 作为 Python 的 HTTP 服务器,通过 FastCGI 运行 Flask 应用程序。

因此,对于第二个问题,您可以在 IIS 反向代理后面运行自己的服务器,但 Azure 网站上的唯一端口是 80在 IIS 上通过 FastCGI 提供 Python Web 应用程序。

关于python - 在 Azure Web Apps 中设置 Python 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56123582/

相关文章:

python - 如何在 flask 中使用 g.user global

python 类方法模拟失败

python - Django 中的模拟请求

python - 如何配置 Python 2.3 日志消息的格式?

azure - 如何创建将启动 VM 然后在 VM 上执行(本地或 Azure)脚本的 Azure 自动化 Runbook?

azure - 在 Kubernetes 中使用 Certbot(作为 CronJob)生成证书

heroku - 在 Heroku 上运行 Flask cli 命令

python - 属性错误 : 'NoneType' object has no attribute 'append' (recursion function)

python - soup.find 找不到 div 的类

json - Microsoft.Graph 无法反序列化响应