Приложение Azure Logic не продолжает работать после вызова HTTP Webhook

Я пытаюсь создать следующий рабочий процесс:

Этот поток будет обедаться каждый месяц. Приложение логики будет использовать HTTP-перехватчик для вызова функции Orchestrator Azure. Эта функция Orchestrator Azure вызовет две другие функции Azure.

Я использую функцию Azure Orchestrator, потому что две другие функции Azure требуют много времени для выполнения, и в этом случае мы говорим о надежных функциях, потому что в противном случае, если приложение логики не получит ответ через некоторое время (через некоторое время также повторяет попытки) это закончится ошибкой. Таким образом, оркестратор решит эту проблему, отправив ответ 202 и заставив приложение логики ждать, пока функции Azure закончатся, и они будут работать (https://docs.microsoft.com/en-us/azure/azure-functions/durable/quickstart-python-vscode). На следующем рисунке показано, как я вызываю Orchestrator:

После получения статуса 200 от HTTP Webhook, который указывает на то, что функции azure успешно завершили работу, он перейдет к следующему шагу, на котором мы вызываем конвейер Azure, а затем мы отправим электронное письмо о состоянии конвейера DevOps (если заканчивается успехом или неудачей).

Итак, это описание того, что я делаю.

Моя проблема в том, что приложение Logic заблокировано при вызове HTTP Webhook. Я уже проверил лазурные функции, и они работают хорошо, и я уже проверял их выходы, проверяя журналы, и они заканчиваются успешно.

Я не знаю, где именно возникает проблема.

Это код стартера функции Azure Orchestrator :

      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)

Это код Orchestrator, который вызывает функции Azure:

      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 (продолжительность тайм-аута и количество повторных попыток и количество повторных попыток), но всегда та же проблема.

Может ли у кого-нибудь быть предложение, которое может помочь решить проблему? заранее спасибо, ребята

0 ответов

Другие вопросы по тегам