【问题标题】:Azure Python WebApp 'Service Unavailable' With Pyodbc使用 Pyodbc 的 Azure Python WebApp“服务不可用”
【发布时间】:2018-10-15 04:07:16
【问题描述】:

我在 Azure 中有一个在 Python 中运行的 Web 应用程序。 我在 Azure 上使用 Flask 运行 Python,一切正常,但随后我导入了 pyodbc 以连接我的 sql 服务器,也在 Azure 上,在此导入后,当我访问我的 url 时,我遇到了“服务不可用”。

这个问题只有在我导入pyodbc时才会出现。

我该如何解决这个问题?

谢谢!

【问题讨论】:

  • 您好,我的回答对您有帮助吗?
  • 您好,现在有进展吗?如果我的回答对您有帮助,您可以将其标记为已回答,非常感谢。

标签: python azure azure-sql-database azure-web-app-service pyodbc


【解决方案1】:

根据我的经验,“服务不可用”是由于程序内部问题。您可以查看 KUDU url https://***.scm.azurewebsites.net/DebugConsole 上的日志。

请参考我的工作步骤安装pyodbc模块。

view.py

from datetime import datetime
from flask import render_template
from jaygongflask import app
import pyodbc

@app.route('/database')
def database():
    """Renders the about page."""
    cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER=***.database.windows.net;DATABASE=***;UID=***;PWD=***')
    cursor = cnxn.cursor()
    cursor.execute("select * from dbo.Student")
    row = cursor.fetchall()
    #for r in row:
     #   print r
    return render_template(
        'database.html',
        title='Database',
        year=datetime.now().year,
        message='Database query result.',
        queryResult = row
    )

web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="WSGI_HANDLER" value="jaygongflask.app"/>
    <add key="PYTHONPATH" value="D:\home\site\wwwroot"/>
    <add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/>
  </appSettings>
  <system.webServer>
    <handlers>
      <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\Python361x64\python.exe|D:\home\Python361x64\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/>
    </handlers>
  </system.webServer>
</configuration>

安装 pyodbc 包

我的网络应用程序使用 python361x64 扩展。请参考我做的步骤如下:

第 1 步:创建 azure web 应用并添加扩展(这里是 Python 3.6.1 x64)

第 2 步:发布您的 flask 项目并添加 web.config

web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="WSGI_HANDLER" value="<Your Project Name>.app"/>
    <add key="PYTHONPATH" value="D:\home\site\wwwroot"/>
    <add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/>
  </appSettings>
  <system.webServer>
    <handlers>
      <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\Python361x64\python.exe|D:\home\Python361x64\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/>
    </handlers>
  </system.webServer>
</configuration>

第三步:切换到 Kudu CMD 和命令cd Python361x64touch get-pip.py 并通过编辑按钮将url https://bootstrap.pypa.io/get-pip.py 的内容复制到get-pip.py 中,然后运行python get-pip.py 以安装pip 工具。

第 4 步:通过 python -m pip install pyodbc 安装 pyodbc 包或您需要的任何包

更多部署细节,请参考这个tutorial

获取查询结果

访问网址http://***.azurewebsites.net/database

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-09
    • 1970-01-01
    • 2018-03-06
    • 2022-08-17
    • 1970-01-01
    • 2021-06-06
    相关资源
    最近更新 更多