Azure 函数应用处理时间是否可以通过延长队列消息的不可见度来延长它,直到它被处理?



我正在使用Python中的Azure Function Apps,它有两个Functions HTTPTrigger和QueueTrigger,在QueueTrigger中,我调用我的自定义代码,这需要10多分钟的处理时间。我在 host.json{"functionTimeout": "00:10:00"}中将其从 5 分钟更改为 10 分钟。我的问题是,有没有办法通过更新队列消息内容来延长处理时间 或可见性超时或超时?换句话说,如果将消息的不可见时间延长到处理为止,函数应用处理时间是否会延长?请参阅 Python API QueueService.update_message() 是否有其他无服务器选项可以运行长进程?

更新消息的可见性超时。你也可以使用这个 更新消息内容的操作。

此操作可用于不断扩展 队列消息。如果需要工作人员,此功能可能很有用 角色以"租用"队列消息。例如,如果辅助角色调用 get_messages并认识到它需要更多时间来处理 消息,它可以不断扩展消息的不可见性,直到它 正在处理。如果辅助角色在处理过程中失败, 最终,消息将再次可见,并且另一个工作人员 角色可以处理它。

update_message(queue_name, message_id, pop_receipt, visibility_timeout, content=None, timeout=None)

如果需要运行时间超过 10 分钟的函数,则需要切换到应用服务计划。在那里,您可以无限期地运行函数:https://learn.microsoft.com/en-us/azure/azure-functions/functions-scale#timeout

但请注意,就扩展而言,这不再是完全"无服务器"的。应用服务计划不会像消耗计划缩放那样无限期地缩放。此外,还需要为应用服务计划支付固定价格。

最新更新