Gunicorn Worker 无法在 Azure Web App Linux 上启动 - ModuleNotFoundError

问题描述 投票:0回答:1

我在使用 Gunicorn 在 Azure Web App Linux 上部署 Django 应用程序时遇到问题。部署过程似乎成功,但 Gunicorn 工作线程无法启动并出现以下错误:

[2024-03-07 04:42:30 +0000] [71] [ERROR] Exception in worker process
...
ModuleNotFoundError: No module named 'csvvalidator.validator.wsgi'
...

这是我的 YAML 文件:

trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: UsePythonVersion@0
  inputs:
    versionSpec: '3.10'
    addToPath: true

- script: |
    python -m venv /home/site/wwwroot/antenv
    source /home/site/wwwroot/antenv/bin/activate
    pip install -r requirements.txt
  displayName: 'Install dependencies'

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(Build.Repository.LocalPath)'
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    replaceExistingArchive: true

- task: PublishBuildArtifacts@1
  inputs:
    pathtoPublish: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    artifactName: 'drop'
    publishLocation: 'Container'

- task: DownloadBuildArtifacts@0
  inputs:
    buildType: 'current'
    downloadType: 'single'
    artifactName: 'drop'
    downloadPath: '$(System.ArtifactStagingDirectory)'

- task: AzureRmWebAppDeployment@4
  inputs:
    ConnectionType: 'AzureRM'
    azureSubscription: 'Subscription'
    appType: 'webAppLinux'
    WebAppName: 'safe-lives-copilot-dev'
    packageForLinux: '$(System.ArtifactStagingDirectory)/**/*.zip'
    RuntimeStack: 'PYTHON|3.10'
    StartupCommand: 'gunicorn -b :8000 csvvalidator.validator.wsgi:application'

部署时创建了虚拟环境,但有警告提示找不到虚拟环境目录。

2024-03-07T04:42:30 WARNING: Could not find virtual environment directory /home/site/wwwroot/antenv.
2024-03-07T04:42:30 WARNING: Could not find package directory /home/site/wwwroot/__oryx_packages__.

任何有关解决 Gunicorn 工人启动故障的指导或见解将不胜感激。

python django azure-web-app-service azure-pipelines gunicorn
1个回答
0
投票

我认为问题与环境变量有关。您需要正确定义它。可以作为参考

Gunicorn环境变量设置

© www.soinside.com 2019 - 2024. All rights reserved.