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

使用Pulumi部署V2版Azure Functions后因自定义模块导入致函数不可见

解决Azure Functions v2(Python)模块化部署后函数不可见的最佳实践

核心方案:直接在项目目录中放置自定义模块

无需使用蓝图或打包成.whl,直接将自定义代码组织为项目内的模块/包,配合正确的部署配置即可实现模块化,同时保证函数能被正确索引。

1. 调整项目目录结构

将自定义功能整理为项目根目录下的Python包,示例结构:

your-project/
├── __init__.py          # 函数入口文件
├── requirements.txt     # 依赖声明
└── custom_package/
    ├── __init__.py      # 标识为Python包(可空)
    └── utils.py         # 自定义功能代码

在custom_package/utils.py中实现功能:

def custom_function(arg1, arg2):
    # 数据库调用等自定义逻辑
    return f"{arg1}-{arg2}"

2. 修正函数入口代码

确保参数获取正确(之前的代码直接使用arg1会导致运行时错误,进而让Worker无法索引到函数),同时正确导入自定义模块:

import azure.functions as func
import logging
from custom_package.utils import custom_function  # 正确导入

app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)

@app.function_name(name="example_func")
@app.route(route="route/{arg1}/{arg2}", auth_level=func.AuthLevel.ANONYMOUS, methods=[func.HttpMethod.POST])
async def example(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('HTTP trigger function processed a request.')
    
    # 从路由参数中获取值
    arg1 = req.route_params.get('arg1')
    arg2 = req.route_params.get('arg2')
    
    if not arg1 or not arg2:
        return func.HttpResponse("Missing route parameters", status_code=400)
    
    res = custom_function(arg1, arg2)    
    return func.HttpResponse(f"Success: {res}", status_code=200)

3. 完善Pulumi部署配置

  • 确保依赖声明完整:在requirements.txt中添加必要的包,比如:
    azure-functions>=1.17.0
    # 如果自定义包有额外依赖,比如pyodbc(数据库调用),也要添加
    
  • 验证部署包内容:pulumi.FileArchive(".")会打包当前目录所有文件,确认自定义模块目录custom_package被包含在内(可部署后下载存储Blob中的zip包检查)。
  • 保留必要的应用设置:已配置的AzureWebJobsFeatureFlags=EnableWorkerIndexing、ENABLE_ORYX_BUILD=true、SCM_DO_BUILD_DURING_DEPLOYMENT=true是确保Python函数正确构建和索引的关键,无需修改。

关键排查步骤

如果函数仍不可见,优先检查以下内容:

  • 查看函数应用的日志流(Azure Portal -> 函数应用 -> 监测 -> 日志流),确认是否有模块导入错误、运行时异常(这类错误会导致Worker无法完成函数索引)。
  • 确认自定义包目录下存在__init__.py文件(即使是空文件,Python也会识别为合法包)。
  • 检查存储Blob中的部署包,确认自定义模块文件已被正确打包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:07:07