团队,我一直在尝试在Azure API应用程序上托管Flask API。而且它不起作用。
Azure API应用程序正在运行。托管页面打开,Python版本为3.6.6。
我无法托管简单的hello world项目,并且遇到的不同错误如下。
无法在web.config中添加处理程序。如果加上500错误。
无法从Kudu安装烧瓶。获取权限错误。与--user一起安装时,flask将安装到用户文件夹中。已更改路径以包括此文件夹,但仍无法导入flask。
使用git部署。上载成功,但是在部署时出现错误,指出python 3.6不受支持的运行时版本。
可能我缺少在Azure API应用上设置python的基本知识吗?问题是我总是收到500错误。但是基本的azure托管起始页有效(除非我触摸web.config)
注意 :
-遵循了婴儿python API教程。
按照天蓝色帮助部分中给出的说明进行操作
还添加了python 3.6扩展。没有改变。
最佳答案
有一个类似的SO线程How to run python3.7 based flask web api on azure的答案,可以帮助使用WSGI_Handle
部署flask应用程序。
或者,如果您只是想知道如何像在本地计算机上使用hello world
一样在Azure的官方烧瓶网站上运行flask run
演示,可以按照以下步骤进行操作。
通过您的API应用上的Kudu安装Python 3.6.4 x64
网站扩展。
移至Kudu CMD控制台,
然后按照以下命令升级pip
并在Kudu控制台中安装flask
。
D:\home\python364x64>python -V
Python 3.6.4
D:\home\python364x64>pip -V
pip 9.0.1 from D:\home\python364x64\lib\site-packages (python 3.6)
D:\home\python364x64>python -m pip install --upgrade pip
Collecting pip
Downloading https://files.pythonhosted.org/packages/c2/d7/90f34cb0d83a6c5631cf71dfe64cc1054598c843a92b400e55675cc2ac37/pip-18.1-py2.py3-none-any.whl (1.3MB)
Installing collected packages: pip
Found existing installation: pip 9.0.1
Uninstalling pip-9.0.1:
Successfully uninstalled pip-9.0.1
Successfully installed pip-18.1
D:\home\python364x64>pip install flask
Collecting flask
Downloading https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl (91kB)
Collecting click>=5.1 (from flask)
Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB)
Collecting Jinja2>=2.10 (from flask)
Downloading https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl (126kB)
Collecting Werkzeug>=0.14 (from flask)
Downloading https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl (322kB)
Collecting itsdangerous>=0.24 (from flask)
Downloading https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
Collecting MarkupSafe>=0.23 (from Jinja2>=2.10->flask)
Downloading https://files.pythonhosted.org/packages/9d/80/9a5daf3ed7b8482e72ee138cef602b538cfba5c507e24e39fb95c189b16b/MarkupSafe-1.1.0-cp36-cp36m-win_amd64.whl
Installing collected packages: click, MarkupSafe, Jinja2, Werkzeug, itsdangerous, flask
The script flask.exe is installed in 'D:\home\python364x64\Scripts' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed Jinja2-2.10 MarkupSafe-1.1.0 Werkzeug-0.14.1 click-7.0 flask-1.0.2 itsdangerous-1.1.0
上载
app.py
和web.config
文件,以下是它们的内容。
app.py
内容:from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
web.config
内容:<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="PYTHONPATH" value="D:\home\site\wwwroot" />
<add key="PATH" value="D:\home\python364x64;D:\home\python364x64\Scripts;%PATH%" />
</appSettings>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="D:\home\python364x64\Scripts\flask.exe" arguments="run --port %HTTP_PLATFORM_PORT%" stdoutLogEnabled="true" startupRetryCount='10'>
</httpPlatform>
</system.webServer>
</configuration>
然后,刷新您的浏览器,或首先重新启动浏览器的API App,您将看到下图。