You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Flask机器人部署至Azure Web App后运行失败求助

问题排查与解决方案

针对你部署Flask应用到Azure Linux Web App后出现应用程序错误的情况,结合代码和Azure环境特性,按以下优先级排查:

1. 修复未完成的generate_answer函数

你的代码中generate_answer函数仅定义了文档字符串,无实际逻辑实现,会直接导致调用时抛出执行错误。补充完整函数实现,示例如下:

def generate_answer(conversation: List[Dict[str, str]]) -> str:
    """生成基于Azure OpenAI的回答"""
    try:
        response = openai.ChatCompletion.create(
            engine=Config.AZURE_OPENAI_DEPLOYMENT,
            messages=conversation,
            temperature=0.7,
            max_tokens=1000
        )
        return response['choices'][0]['message']['content'].strip()
    except Exception as e:
        logger.error(f"OpenAI generation error: {str(e)}")
        return "无法生成分析结果,请稍后重试。"

2. 配置Azure Web App应用设置

代码依赖的核心环境变量必须在Azure Portal中配置:

  • 进入你的Web App → 配置 → 应用设置
  • 添加以下键值对:
    • SEARCH_KEY: 你的Azure Cognitive Search密钥
    • AZURE_OPENAI_ENDPOINT: Azure OpenAI服务的端点URL
    • AZURE_OPENAI_KEY: Azure OpenAI的密钥
    • (可选)若默认值不符合需求,补充SEARCH_SERVICE、SEARCH_INDEX、AZURE_OPENAI_DEPLOYMENT

3. 指定启动命令

Azure Linux Web App无法自动识别Flask应用入口,需手动设置启动命令:

  • 进入Web App → 配置 → 常规设置 → 启动命令
  • 设置为:
    gunicorn --bind=0.0.0.0 --timeout 600 application:application
    
    (application:application表示从application.py文件加载名为application的Flask实例)

4. 调整日志配置

代码中FileHandler('app.log')会尝试在容器内创建日志文件,但Azure Web App默认工作目录无写入权限,且日志会随容器重启丢失。建议移除文件日志,仅保留标准输出:

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[logging.StreamHandler(sys.stdout)]
)

可通过Azure Portal的「日志流」功能实时查看应用输出。

5. 验证requirements.txt完整性

确保requirements.txt包含所有依赖包,版本与本地一致:

Flask>=2.0.0
azure-search-documents>=11.4.0
azure-core>=1.26.0
openai>=0.27.0
gunicorn>=20.1.0

部署时Azure会自动安装这些包,版本不兼容可能导致启动失败。

6. 匹配Python版本

检查Azure Web App的Python运行时版本是否与本地开发环境一致:

  • 进入Web App → 配置 → 常规设置 → Python版本
  • 选择与本地相同的版本(例如3.10),避免因语法或依赖版本差异引发错误

7. 测试健康检查端点

部署完成后,先访问https://<your-webapp-name>.azurewebsites.net/health,查看返回的config_valid字段:

  • 若为false,说明环境变量未配置正确,回到步骤2检查
  • 若为true,再测试主页面功能

内容的提问来源于stack exchange,提问作者Dimitar Grigorov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:35:15