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

Python版Azure Function运行时触发InternalServerError错误,请求排查指引

Python版Azure Function运行时触发InternalServerError错误,请求排查指引

看起来你遇到了Python版Azure Function运行时的500内部错误,而且还没法通过App Insights查到相关日志,确实挺棘手的。结合你给出的代码、环境变量和配置信息,我给你梳理几个针对性的排查方向:

  • 先排查依赖缺失问题:你的代码里导入了requests库,但没看到你提到requirements.txt文件。Azure Function部署时,Oryx构建过程会根据这个文件安装依赖,如果没把requests和azure-functions写进去,运行时会直接报模块找不到的错误,这是Python Function触发500错误的最常见原因。建议在项目根目录创建requirements.txt,内容如下:

    azure-functions>=1.17.0
    requests>=2.31.0
    

    然后重新部署测试。

  • 查看Portal实时日志获取错误堆栈:既然App Insights没抓到日志,先去Azure Portal的Function App页面,找到你的Timer Trigger函数,进入「代码+测试」面板,打开顶部的「日志」(切换到Verbose级别)。这里能看到函数启动和运行的实时输出,包括具体的错误堆栈信息,比App Insights更直接,尤其是启动阶段的错误。

  • 清理不必要的环境变量:注意到你配置了WEBSITE_USE_PLACEHOLDER_DOTNETISOLATED=1,这个变量是给.NET Isolated模式的Function用的,Python环境下不需要这个配置,反而可能导致兼容性问题。建议删除这个环境变量,重启Function App后再测试。

  • 验证Python版本兼容性:你的FUNCTIONS_EXTENSION_VERSION是~4,这个版本对应的Python Worker支持3.8-3.11版本的Python。请确认:

    1. 本地开发用的Python版本和Azure上配置的一致(在Function App的「配置」→「常规设置」里查看Python版本)
    2. 不要使用3.12及以上的Python版本,目前~4版本的扩展还不支持
  • 简化代码缩小排查范围:先把代码里的import requests去掉,改成最极简的版本:

    import azure.functions as func
    import logging
    
    app = func.FunctionApp()
    @app.timer_trigger(schedule="0 * * * * *", arg_name="myTimer", run_on_startup=True, use_monitor=False) 
    def timer_trigger(myTimer: func.TimerRequest) -> None:
        if myTimer.past_due:
            logging.info('The timer is past due!')
        logging.info("Hello, World!")
    

    换成logging.info()代替print,因为print的输出有时候无法被App Insights正确捕获。部署这个简化版,如果能正常运行,说明问题出在requests依赖或相关逻辑上;如果还是报错,那就是环境或配置层面的问题。

  • 检查Oryx构建日志:你开启了SCM_DO_BUILD_DURING_DEPLOYMENT=1和ENABLE_ORYX_BUILD=true,会用Oryx自动构建项目。可以去「部署中心」→「日志」里查看构建过程有没有报错,比如依赖安装失败、文件权限问题等,构建失败会直接导致函数启动失败。

备注:内容来源于stack exchange,提问作者Thomas Segato

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:33:11