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

Azure Functions Python(V2)部署后触发器未检测无法启动求助

排查Azure Functions Python V2部署后触发器未检测到问题

1. 核对项目结构与核心配置

Python V2版本依赖pyproject.toml(替代V1的function.json+requirements.txt组合),需确保:

  • 项目根目录存在pyproject.toml,且正确声明Azure Functions SDK依赖:
    [project]
    dependencies = [
      "azure-functions>=1.17.0"
    ]
    
  • function_app.py中触发器装饰器语法合规,以HTTP触发器为例:
    import azure.functions as func
    
    app = func.FunctionApp()
    
    @app.route(route="http_trigger", auth_level=func.AuthLevel.ANONYMOUS)
    def http_trigger(req: func.HttpRequest) -> func.HttpResponse:
        return func.HttpResponse("Hello, World!", status_code=200)
    
  • 清理项目中遗留的V1版本function.json文件,避免版本冲突。

2. 检查GitHub CI/CD工作流配置

部署脚本需适配Python V2的部署逻辑:

  • 使用Azure官方Azure/functions-action,并开启package: true,示例片段:
    - name: Deploy to Azure Functions
      uses: Azure/functions-action@v1
      with:
        app-name: your-function-app-name
        slot-name: Production
        package: .
        publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}
        scm-do-build-during-deployment: true
    
  • 确认工作流中包含依赖安装步骤,如基于pyproject.toml执行:
    pip install .
    
    或基于requirements.txt执行:
    pip install -r requirements.txt
    

3. 验证Azure Portal应用配置

  • 进入函数应用配置 > 应用程序设置,确认:
    • FUNCTIONS_EXTENSION_VERSION设为~4(Python V2强制要求)
    • FUNCTIONS_WORKER_RUNTIME设为python
    • PYTHON_VERSION设为3.10/3.11(当前官方支持版本)
  • 查看部署中心 > 日志,排查部署过程中是否存在依赖安装失败、文件缺失等报错。

4. 查看函数运行日志

  • 进入函数应用监控 > 日志,搜索关键错误信息:
    • 触发器装饰器识别失败报错
    • 依赖缺失导致的导入异常
    • 文件权限不足无法读取代码
  • 也可通过本地命令实时查看日志:
    func azure functionapp log stream <your-app-name>
    

5. 确认部署包文件结构

  • 在GitHub工作流中添加步骤,输出部署包目录结构,确保function_app.py、pyproject.toml等核心文件位于根目录,未被错误打包到子文件夹。
  • 或通过Azure Portal高级工具 > Kudu > 调试控制台,查看site/wwwroot目录下的文件布局,确认代码文件位置正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:55:59