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

Python Azure Durable Functions活动函数未被调用问题求助

Azure Durable Functions 活动函数F3未被调用排查

问题概述

我正在编排3个Azure Functions,流程为 F1 (Service Bus) -> F2 (Orchestrator) -> F3 (Activity),但活动函数F3始终未被调用。F1运行正常,F2可被正常触发,但执行卡在result = yield context.call_activity('F3', input_json)处,处于Awaited状态。环境信息:Azure Functions 4 runtime,Python版本3.7(尝试升级至3.9后问题仍存在)。

日志信息

xxxxxx: Function 'F2 (Orchestrator)' awaited. IsReplay: False. State: Awaited. HubName: pyproxxxxx. AppName: py-proxxxxx. SlotName: Production. ExtensionVersion: 2.8.1. SequenceNumber: 11.

F1(Service Bus触发函数)

运行正常,代码及配置如下:

代码

import logging
import json
import azure.functions as func
import azure.durable_functions as df


async def main(msg: func.ServiceBusMessage, starter: str):
    client = df.DurableOrchestrationClient(starter)
    json_body = json.loads(msg.get_body().decode('utf-8'))
    instance_id = await client.start_new('F2', None, json_body)

    logging.info(f"Started orchestration with ID = '{instance_id}'")

配置(function.json)

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "msg",
      "type": "serviceBusTrigger",
      "direction": "in",
      "queueName": "queueN",
      "connection": "processConnectionString"
    },
    {
      "name": "starter",
      "type": "durableClient",
      "direction": "in"
    }
  ]
}

F2(编排器函数)

可被正常调用,但执行卡在活动函数调用处,代码及配置如下:

代码

import logging
import json

import azure.functions as func
import azure.durable_functions as df


def orchestrator_function(context: df.DurableOrchestrationContext):
    input_json = context.get_input()
    result = yield context.call_activity('F3', input_json)
    return result

main = df.Orchestrator.create(orchestrator_function)

配置(function.json)

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "context",
      "type": "orchestrationTrigger",
      "direction": "in"
    }
  ]
}

F3(活动函数)

未被F2调用,代码及配置如下:

代码

import logging

def main(input_json) -> str:
    logging.info('Input processed message : %s', input_json)
    return "Hello!"

配置(function.json)

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "input_json",
      "type": "activityTrigger",
      "direction": "in"
    }
  ]
}

可能的问题原因

  • 活动函数名称不匹配:确认F2中调用的'F3'是否与F3函数的实际名称完全一致(Azure Functions名称区分大小写)。
  • Task Hub配置不一致:检查所有函数的host.json中durableTask.hubName配置是否相同,Durable Functions依赖统一的Task Hub来调度任务。
  • 扩展版本兼容性:当前使用的Durable扩展版本为2.8.1,Azure Functions 4 runtime推荐搭配v4.x系列的Durable扩展,旧版本可能存在调度兼容性问题。
  • Storage账户问题:Durable Functions依赖Azure Storage管理任务队列和状态,确认AzureWebJobsStorage连接字符串正确,且账户具备队列、表数据的读写权限;同时检查Storage账户是否达到配额限制。
  • 函数部署状态异常:确认F3已成功部署并处于启用状态,查看部署日志是否存在报错。
  • 输入数据序列化问题:检查F2传递给F3的input_json是否为可序列化的标准JSON格式,若包含非JSON兼容类型(如datetime、自定义对象),会导致任务调度失败。
  • 资源配额耗尽:检查函数应用的CPU、内存是否达到配额限制,导致活动函数无法启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:45:17