Функции Azure - ограничение параллельного выполнения

Можно ли ограничить максимальное количество параллельных функций?

Я прочитал документацию и наткнулся на это:

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

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

Максимальное количество одновременных вызовов функций в каждом экземпляре приложения-функции зависит от типа используемого триггера, а также от ресурсов, используемых другими функциями в приложении-функции.

https://docs.microsoft.com/en-gb/azure/azure-functions/functions-reference#parallel-execution

Я использую функцию в плане обслуживания приложений с привязкой ввода концентратора событий, и у меня есть только одна функция в приложении функций. Если я не могу ограничить это, кто-нибудь знает, какое максимальное количество одновременных вызовов функций будет для такого рода установки?

Ответ 1

Невозможно указать максимальную функцию concurrency для функций событий, связанных с событиями, но вы можете контролировать параметры партии и выборки в виде описанных здесь.

Максимальное количество одновременных вызовов также может варьироваться в зависимости от вашей рабочей нагрузки и использования ресурсов.

Если нужны ограничения concurrency, это (в настоящее время) то, что вам нужно будет обрабатывать, а следующие сообщения обсуждают некоторые шаблоны, которые могут вам пригодиться:

Обработка очереди хранения Azure в приложении Azure Function

Ограничение количества параллельных заданий в очереди Azure Functions

Ответ 2

Просто для справки, я наткнулся здесь в поисках дросселирования. Вы можете использовать атрибут [Singleton] в вашей функции, обеспечивая только одноразовое выполнение. Может быть, не совсем то, что вы искали, и очень строгий способ регулирования, но, тем не менее, это вариант.

https://github.com/Azure/azure-webjobs-sdk/wiki/Singleton

Ответ 3

Имеет ли смысл устанавливать batchSize = 1? В случае, если я хочу обрабатывать файлы по одному?

{
  "version": "2.0",
  "functionTimeout": "00:15:00",
  "aggregator": {
    "batchSize": 1,
    "flushTimeout": "00:00:30"
  }
}