天蓝色函数最大执行时间
azure function max execution time
我想在计时器上调用一个函数(每 X 分钟),但我想确保一次只有一个此函数的实例是 运行。函数中发生的工作不应该花费很长时间,但如果由于某种原因它花费的时间比预定的计时器(X 分钟)更长,我不希望另一个实例启动并且进程相互踩踏。
我能想到的最简单的方法是将函数的最长执行时间也设置为 X 分钟。我想知道如何在 App Service 和 Consumption 计划中实现这一点,即使它们是不同的方法。我也希望能够在单个功能级别上进行设置。
这种类型的功能通常内置于 FaaS 环境中,但我最难 google-使用它。这在 function.json 中可能吗?还是有不同的方法来确保它只运行一次?
(PS。我知道我可以通过将工作包装在一个带有超时的线程中来在我自己的代码中做到这一点。但我希望有一些更惯用的东西。)
定时器函数已经有这种行为 - 它们从 AzureWebJobsStorage
存储帐户中取出一个 blob 租约以确保只有一个实例在执行定时器函数。此外,当先前计划的执行正在进行时,计时器将不会执行。
另一种自己动手的可能性是使用存储队列和可见性超时来处理此问题 - 当队列完成处理时,推送具有可见性超时的新队列消息以匹配所需的计划。
我想提一下,functionTimeout
host.json
属性 会为您的所有函数添加超时,但副作用是您的函数会因超时错误而失败并且该函数实例将重新启动,因此在这种情况下我不会依赖它。
您可以在host.json中指定'functionTimeout'属性
https://github.com/Azure/azure-webjobs-sdk-script/wiki/host.json
// Value indicating the timeout duration for all functions.
// In Dynamic SKUs, the valid range is from 1 second to 10 minutes and the default value is 5 minutes.
// In Paid SKUs there is no limit and the default value is null (indicating no timeut).
"functionTimeout": "00:05:00"
有一个名为 Premium 的新 Azure Functions 计划(在 public 2019 年 5 月的预览版中)允许无限执行时间:
https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale
它可能会成为大多数企业场景的转到计划。
我想在计时器上调用一个函数(每 X 分钟),但我想确保一次只有一个此函数的实例是 运行。函数中发生的工作不应该花费很长时间,但如果由于某种原因它花费的时间比预定的计时器(X 分钟)更长,我不希望另一个实例启动并且进程相互踩踏。
我能想到的最简单的方法是将函数的最长执行时间也设置为 X 分钟。我想知道如何在 App Service 和 Consumption 计划中实现这一点,即使它们是不同的方法。我也希望能够在单个功能级别上进行设置。
这种类型的功能通常内置于 FaaS 环境中,但我最难 google-使用它。这在 function.json 中可能吗?还是有不同的方法来确保它只运行一次?
(PS。我知道我可以通过将工作包装在一个带有超时的线程中来在我自己的代码中做到这一点。但我希望有一些更惯用的东西。)
定时器函数已经有这种行为 - 它们从 AzureWebJobsStorage
存储帐户中取出一个 blob 租约以确保只有一个实例在执行定时器函数。此外,当先前计划的执行正在进行时,计时器将不会执行。
另一种自己动手的可能性是使用存储队列和可见性超时来处理此问题 - 当队列完成处理时,推送具有可见性超时的新队列消息以匹配所需的计划。
我想提一下,functionTimeout
host.json
属性 会为您的所有函数添加超时,但副作用是您的函数会因超时错误而失败并且该函数实例将重新启动,因此在这种情况下我不会依赖它。
您可以在host.json中指定'functionTimeout'属性 https://github.com/Azure/azure-webjobs-sdk-script/wiki/host.json
// Value indicating the timeout duration for all functions.
// In Dynamic SKUs, the valid range is from 1 second to 10 minutes and the default value is 5 minutes.
// In Paid SKUs there is no limit and the default value is null (indicating no timeut).
"functionTimeout": "00:05:00"
有一个名为 Premium 的新 Azure Functions 计划(在 public 2019 年 5 月的预览版中)允许无限执行时间: https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale
它可能会成为大多数企业场景的转到计划。