【问题标题】:Deploy Python-Flask api in Azure在 Azure 中部署 Python-Flask api
【发布时间】:2019-01-11 12:03:49
【问题描述】:

我已经在 Azure 中部署了 Python-Flask API。它在开发环境中工作正常。它具有以下 .txt 文件中提到的依赖项。

  • 点击==6.7
  • 烧瓶==1.0.2
  • 其危险==0.24
  • Jinja2==2.10
  • MarkupSafe==1.0
  • Werkzeug==0.14.1
  • jsonpickle==1.0
  • pyodbc==4.0.25

我有一个 app.py 类,它有一些包含一些 DB CURD 操作的函数。它还有一个 db.py,其中包含以下代码:

import pyodbc cnxn = pyodbc.connect(cs)

但是当我导航到https://kmsazapi.azurewebsites.net/ 时,它给出了以下错误
:( 应用程序错误。 如果您是应用程序管理员,您可以访问诊断资源。

请从 Azure 中找到应用程序日志:

2019-01-19T16:30:46.743756546Z 2019-01-19T16:30:46.893500456Z 启动 OpenBSD Secure Shell 服务器:sshd。 2019-01-19T16:30:46.921319668Z 运行 python /usr/local/bin/entrypoint.py 2019-01-19T16:30:47.042444539Z 执行: 2019-01-19T16:30:47.042628845Z python --version 2019-01-19T16:30:47.060630336Z Python 3.7.1 2019-01-19T16:30:47.060830442Z 执行: 2019-01-19T16:30:47.060993448Z pip --version 2019-01-19T16:30:49.209547693Z pip 10.0.1 来自 /home/site/wwwroot/antenv/lib/python3.7/site-packages/pip (python 3.7) 2019-01-19T16:30:49.214266747Z 找到烧瓶应用程序 2019-01-19T16:30:49.219978635Z 执行: 2019-01-19T16:30:49.219990835Z。 antenv/bin/激活 2019-01-19T16:30:49.224706090Z 2019-01-19T16:30:49.224798193Z 执行: 2019-01-19T16:30:49.224971698Z GUNICORN_CMD_ARGS="--bind=0.0.0.0 --timeout 600" gunicorn 应用程序:app 2019-01-19T16:30:50.183264018Z [2019-01-19 16:30:50 +0000] [36] [INFO] 启动 gunicorn 19.9.0 2019-01-19T16:30:50.183984042Z [2019-01-19 16:30:50 +0000] [36] [INFO] 收听:http://0.0.0.0:8000 (36) 2019-01-19T16:30:50.184216749Z [2019-01-19 16:30:50 +0000] [36] [INFO] 使用工作人员:同步 2019-01-19T16:30:50.194083973Z [2019-01-19 16:30:50 +0000] [39] [INFO] 使用 pid:39 引导工作人员

2019-01-19T16:30:50.967282324Z [2019-01-19 16:30:50 +0000] [39] [ERROR] 工作进程中的异常

2019-01-19T16:30:50.967302024Z Traceback(最近一次通话最后): 2019-01-19T16:30:50.967306124Z 文件“/usr/local/lib/python3.7/site-packages/gunicorn/arbiter.py”,第 583 行,在 spawn_worker 2019-01-19T16:30:50.967311525Z worker.init_process() 2019-01-19T16:30:50.967325625Z 文件“/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py”,第 129 行,在 init_process 2019-01-19T16:30:50.967329625Z self.load_wsgi() 2019-01-19T16:30:50.967332825Z 文件“/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py”,第 138 行,在 load_wsgi 2019-01-19T16:30:50.967336425Z self.wsgi = self.app.wsgi() 2019-01-19T16:30:50.967347026Z 文件“/usr/local/lib/python3.7/site-packages/gunicorn/app/base.py”,第 67 行,在 wsgi 2019-01-19T16:30:50.967350926Z self.callable = self.load() 2019-01-19T16:30:50.967354226Z 文件“/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py”,第 52 行,加载中 2019-01-19T16:30:50.967357626Z 返回 self.load_wsgiapp() 2019-01-19T16:30:50.967361026Z 文件“/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py”,第 41 行,在 load_wsgiapp 2019-01-19T16:30:50.967364426Z 返回 util.import_app(self.app_uri) 2019-01-19T16:30:50.967367726Z 文件“/usr/local/lib/python3.7/site-packages/gunicorn/util.py”,第 350 行,在 import_app 2019-01-19T16:30:50.967371427Z 导入(模块) 2019-01-19T16:30:50.967374727Z 文件“/home/site/wwwroot/application.py”,第 7 行,在 2019-01-19T16:30:50.967378427Z 导入数据库 2019-01-19T16:30:50.967381627Z 文件“/home/site/wwwroot/db.py”,第 1 行,在 2019-01-19T16:30:50.967385027Z 导入 pyodbc 2019-01-19T16:30:50.967388327Z ImportError: libodbc.so.2: cannot open shared object file: No such file or directory 2019-01-19T16:30:50.967653236Z [2019-01-19 16:30:50 +0000] [39] [INFO] 工人退出(pid:39) 2019-01-19T16:30:51.050986468Z [2019-01-19 16:30:51 +0000] [36] [INFO] 关机:主 2019-01-19T16:30:51.051229076Z [2019-01-19 16:30:51 +0000] [36] [INFO] 原因:Worker 启动失败。 2019-01-19T16:30:51.102156846Z

我错过了什么?

【问题讨论】:

    标签: python-3.x azure


    【解决方案1】:

    更新:0115:

    如果您将 python 应用部署到 Windows 的 Web 应用,您可以安装 python 扩展,如下所示:转到 azure 门户 -> 您的应用服务 -> 扩展 -> 添加 -> 选择扩展:


    你如何部署你的烧瓶应用程序?

    您可以参考official doc 进行部署。我遵循了文档,并且可以在站点 https://xxx.azurewebsites.net/home 的 azure 中很好地工作。

    我的代码:

    from flask import Flask
    app = Flask(__name__)
    
    @app.route("/home")
    def home():
        return "Hello World a nice day!"
    

    部署到 azure 后,网站运行良好:

    【讨论】:

    • Ivan,在本地开发环境中,我的 API 运行良好,但在 Azure 中部署后,它无法运行。正如我在帖子中提到的,在 Azure 门户中,我只获得了两个版本的 Python,即 2.7 和 3.4,并且我选择了 3.4 版本。我是由于版本不匹配,它给出了这个错误。有什么办法可以在 Azure 门户中添加更多版本的 Python 吗?
    • @semwal 您可以按照我在帖子中提到的文档尝试一下吗?对于python版本,我使用这个cli命令az webapp list-runtimes --linux检查它,结果是没有3.4,但是有2.7,3.6,3.7。
    • @semwal,如果您将 python 应用程序部署到 windows 应用程序服务,您可以在我的回答中参考我更新的部分。如有任何问题,请告诉我。
    • 谢谢伊万。我用过官方文档,效果很好。
    • 我已经更新了 Azure 应用程序日志的问题。谢谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    相关资源
    最近更新 更多