Можете ли вы оценить ограничение функции Azure или выходной очереди хранения? - PullRequest
2 голосов
/ 31 октября 2019

У меня есть запущенная функция Python Azure для очереди хранения, которая отправляет задание стороннему API с ограниченной скоростью (1 запрос / минуту). Очередь, которая запускает функцию, будет периодически получать пакет сообщений, поэтому мне нужен способ гарантировать, что функция будет запущена сразу после получения первого сообщения, через 1 минуту для второго сообщения, через 2 минуты для третьего сообщения,и т. д. до тех пор, пока очередь не станет пустой.

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

Ответы [ 2 ]

3 голосов
/ 01 ноября 2019

Нет способа ограничить скорость в очереди хранилища (за исключением того, что очередь, естественно, ограничена скоростью из-за ограничений скорости транзакций хранения, которые на несколько порядков превышают желаемое в настоящее время ограничение скорости).

Вместо того, чтобы запускать вашу функцию Azure вне очереди поступления сообщений, вы можете настроить триггерный таймер для вашей функции Azure. Это позволит вам установить, скажем, 1-минутный интервал на таймере, где ваша функция может прочитать сообщение и вызвать сторонний API.

Вам нужно будет указать значение таймера,которое является выражением NCRONTAB в следующем формате:

{second} {minute} {hour} {day} {month} {day-of-week}

Выражение каждую минуту будет выглядеть следующим образом:

"0 */1 * * * *"

Больше информации о срабатывании таймера здесь .

0 голосов
/ 01 ноября 2019

Взгляните на свойство NextVisibleTime :

CloudQueueMessage.NextVisibleTime

...