0

我正在尝试创建以下工作流程: 在此处输入图像描述

这个流程每个月都会午餐。逻辑应用将使用 HTTP Webhook 调用 Orchestrator Azure 函数。此 Orchestrator Azure 函数将调用另外两个 Azure 函数。

我正在使用 Azure Orchestrator 函数,因为另外两个 azure 函数需要很长时间才能执行,在这种情况下,我们谈论的是持久函数,否则如果逻辑应用程序在一段时间后没有收到响应(经过一段时间也重试)它将以错误结束。因此,编排器将通过发送 202 响应来解决此问题,并使逻辑应用程序等待 azure 函数结束它们才能工作(https://docs.microsoft.com/en-us/azure/azure-functions/durable/quickstart-python -vscode)。下图显示我正在调用 Orchestrator: 在此处输入图像描述

在收到来自 HTTP Webhook 的 200 状态,表明 azure 函数成功完成工作后,它将进入下一步调用 Azure 管道,然后我们将发送有关 devops 管道状态的电子邮件(如果它以成功或失败结束)。

所以这就是我在做什么的描述。

我的问题是逻辑应用程序在 HTTP Webhook 的调用中被阻止。我已经检查了 azure 函数并且它们运行良好,并且我已经通过检查日志检查了那里的输出并且它们以成功结束。

我不知道问题出在哪里。

这是azure Orchestrator Function Starter的代码:

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


async def main(req: func.HttpRequest, starter: str) -> func.HttpResponse:
    client = df.DurableOrchestrationClient(starter)
    instance_id = await client.start_new(req.route_params["functionName"], None, None)

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

    return client.create_check_status_response(req, instance_id)

这是调用 Azure 函数的 Orchestrator 代码:

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


def orchestrator_function(context: df.DurableOrchestrationContext):
    result1 = yield context.call_activity('data-collection', None)
    result2 = yield context.call_activity('data-merging', None)
    return [result1, result2]

main = df.Orchestrator.create(orchestrator_function)

我已经尝试过操纵 HTTP Webhook 的参数(超时持续时间和重试次数以及重试次数),但总是同样的问题。

任何人都可以提出任何可以帮助解决问题的主张吗?提前谢谢你们

4

0 回答 0