HTTP Trigger on demand azure функция, вызывающая себя несколько раз - PullRequest
0 голосов
/ 21 января 2020

Я добавил функцию http 101 * и включил ее в приложение-функцию. Приложение-функция содержит только одну функцию http-триггер по требованию azure. Функциональное приложение имеет план обслуживания приложения, а не план потребления.

также, версия функционального приложения ~ 1. так что время ожидания не ограничено.

В коде функции azure я читаю один файл с тысячами исторических записей и обрабатываю эти записи. эта задача занимает больше часа времени. это одноразовая задача.

когда я вызываю эту функцию azure после развертывания, она вызывается, и через некоторое время я заметил, что она снова вызывается и снова обрабатывает уже обработанные записи.

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

, если да, как остановите это, чтобы перезвонить, пока он не завершит свою обработку.

1 Ответ

1 голос
/ 21 января 2020

Функции должны быть недолговечными, они не должны работать долго. Сила функций - в недолговечных исполнениях с небольшой или переменной пропускной способностью.

По возможности, рефакторинг больших функций выполняется в меньшие наборы функций, которые работают вместе и быстро возвращают ответы. Например, функция триггера webhook или HTTP может потребовать ответ подтверждения в течение определенного периода времени; для веб-мастеров характерно требовать немедленного ответа. Вы можете передать полезную нагрузку триггера HTTP в очередь для обработки функцией триггера очереди. Этот подход позволяет отложить реальную работу и вернуть немедленный ответ.

Посмотрите на это:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-best-practices#avoid -long-running-functions

С Durable Functions вы можете легко поддерживать длительные процессы, применяя HTTP-API Asyn c . Если вы имеете дело с функциями, требующими некоторого времени для обработки полезной нагрузки или запроса, то использование «Плана обслуживания приложений, WebJob или Durable Functions» является правильным способом.

Как рекомендует @ Thia go Custodio, вам также нужно разбить большие файлы на более мелкие и передать их действиям в рабочем процессе надежных функций.

...