Можно ли продлить время обработки приложения-функции Azure, увеличив невидимость QueueMessage до его обработки?
Я работаю с приложениями-функциями Azure в Python, в котором есть две функции HTTPTrigger и QueueTrigger, в QueueTrigger я вызываю свой пользовательский код, обработка которого занимает более 10 минут. Я изменил его с 5 минут до 10 минут в host.json {"functionTimeout": "00:10:00"}
, У меня вопрос, есть ли способ продлить время процесса путем обновления содержимого QueueMessage или visibilityTimeout или Timeout? Другими словами, увеличится ли время обработки приложения Function, если вы продлите невидимость сообщения до его обработки? см. Python API QueueService.update_message (). Есть ли другие безсерверные опции для запуска длинных процессов?
Обновляет тайм-аут видимости сообщения. Вы также можете использовать эту операцию для обновления содержимого сообщения.
Эта операция может использоваться для постоянного расширения невидимости сообщения очереди. Эта функциональность может быть полезна, если вы хотите, чтобы рабочая роль "арендовала" сообщение очереди. Например, если рабочая роль вызывает get_messages и распознает, что ей требуется больше времени для обработки сообщения, она может постоянно расширять невидимость сообщения, пока оно не будет обработано. Если рабочая роль потерпит неудачу во время обработки, в конечном итоге сообщение снова станет видимым, и другая рабочая роль сможет его обработать.
update_message(queue_name, message_id, pop_receipt, visibility_timeout, content=None, timeout=None)
1 ответ
Если вам нужны функции, которые могут работать дольше 10 минут, вам нужно переключиться на план обслуживания приложений. Там вы можете запускать функции бесконечно: https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale
Имейте в виду, однако, что это не полностью "без сервера" больше с точки зрения масштабирования. План обслуживания приложения не будет масштабироваться более или менее бесконечно так же, как масштаб плана потребления. Кроме того, вы платите фиксированную цену за план обслуживания приложения.