gpt4 book ai didi

python - 无法将简单的 Flask 应用程序部署到 azure web 应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 20:26:22 24 4
gpt4 key购买 nike

我正在尝试将一个非常简单的 Flask 应用程序部署到 Linux azure Web 应用程序,但似乎找不到任何已安装的软件包

它使用虚拟环境在本地主机上运行

以下是文件夹startup.py中的应用代码:

from flask import Flask
from flask_restful import Resource, Api

class Index(Resource):
def get(self):
return "Hellow World"

app = Flask(__name__)
api = Api(app)
api.add_resource(Index, "/home")

我正在尝试使用 azure DevOps 管道部署应用程序,这是我的 azure-pipeline.yml 文件(我删除了本文的变量)

variables:
ConnectedServiceName: <name of my service connection>
WebAppName: <name of my web app>


pool:
name: Hosted Ubuntu 1604

steps:
- task: UsePythonVersion@0
inputs:
versionSpec: '3.6'
architecture: 'x64'

- script: pip install -r requirements.txt
displayName: 'Install requirements'

- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(Build.SourcesDirectory)'
includeRootFolder: false
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/Application$(Build.BuildId).zip'
replaceExistingArchive: true
#verbose: # (no value); this input is optional

- task: AzureRMWebAppDeployment@4
displayName: Azure App Service Deploy
inputs:
appType: webAppLinux
RuntimeStack: 'PYTHON|3.6'
ConnectedServiceName: $(ConnectedServiceName)
WebAppName: $(WebAppName)
Package: '$(Build.ArtifactStagingDirectory)/Application$(Build.BuildId).zip'

StartupCommand: 'gunicorn --bind=0.0.0.0 --workers=4 startup:app'

这是我的requirements.txt 文件

aniso8601==7.0.0
astroid==2.2.5
Click==7.0
colorama==0.4.1
Flask==1.1.1
Flask-JWT-Extended==3.22.0
Flask-RESTful==0.3.7
flask-swagger-ui==3.20.9

管道运行所有步骤,没有错误 Deployment Image

但是wwwroot文件夹中似乎没有包

/home>cd site/wwwroot
/home/site/wwwroot>pip freeze
virtualenv==16.6.2
/home/site/wwwroot>

还尝试了 pip install -rrequirements.txt 站在这个文件夹中,它收集软件包但永远不会结束安装它们(它永远显示“清理...>”)

在应用程序日志中我可以看到

ModuleNotFoundError: No module named 'flask_restful'
2019-09-04T14:55:19.215300670Z [2019-09-04 14:55:19 +0000] [39] [INFO] Worker exiting (pid: 39)
2019-09-04T14:55:19.234394151Z [2019-09-04 14:55:19 +0000] [38] [ERROR] Exception in worker process

如何确保网络应用程序使用requirements.txt中列出的包

有什么可能出问题的想法吗?

最佳答案

尝试创建示例管道 -

pool:
name: Azure Pipelines
steps:
- task: UsePythonVersion@0
displayName: 'Use Python 3.6'
inputs:
versionSpec: 3.6

- task: PythonScript@0
displayName: 'Run a Python script'
inputs:
scriptSource: inline
script: 'pip install -r req.txt'
enabled: false

- script: 'pip install -r req.txt --target=$(Build.BinariesDirectory)'
displayName: 'Command Line Script'

- task: CopyFiles@2
displayName: 'Copy Files to: $(Build.BinariesDirectory)'
inputs:
TargetFolder: '$(Build.BinariesDirectory)'

- task: ArchiveFiles@2
displayName: 'Archive $(Build.BinariesDirectory)'

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: drop'

- task: AzureWebApp@1
displayName: 'Azure Web App Deploy: '
inputs:
azureSubscription: ''
appType: webAppLinux
appName:
package: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
runtimeStack: 'PYTHON|3.6'

PublishBuildArtifacts - 此处不是必需的,但可用于验证将发布到 Web 应用程序的实际构建工件。您可以尝试验证这些包是否存在于工件中。

关于python - 无法将简单的 Flask 应用程序部署到 azure web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57791175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com