0

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

更新消息的可见性超时。您还可以使用此操作来更新消息的内容。

此操作可用于不断扩展队列消息的不可见性。如果您希望工作人员角色“租用”队列消息,此功能会很有用。例如,如果一个工作角色调用 get_messages 并认识到它需要更多时间来处理一条消息,它可以不断地延长消息的不可见性,直到它被处理。如果工作角色在处理过程中失败,最终消息将再次变得可见,并且另一个工作角色可以处理它。

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

4

1 回答 1

1

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

但是请注意,就扩展而言,这不再是完全“无服务器”。应用服务计划不会像消费计划一样无限期地扩展。另外,您需要为应用服务计划支付固定价格。

于 2019-07-23T17:03:11.767 回答