首页 > 解决方案 > 有没有办法以编程方式重新启动 azure 函数

问题描述

我有一个每隔几分钟在计时器上运行的 Azure 函数,经过不同的运行时间后,每次运行时都会因为外部 API 而开始失败,并且在 azure 门户中手动点击重新启动按钮可以解决问题和工作再次工作。

有没有办法让 azure 函数重新启动,或者通过 web 钩子或 API 请求或在计时器上运行从外部重新启动 azure 函数

我曾尝试使用 Azures API 管理服务,该服务可用于在 azure 中重新启动其他类型的应用程序服务,但事实证明 API 中没有请求重新启动 azure 函数的功能,还查看了 power shell,它似乎是同样的问题,您可以重新启动不同的应用程序服务,但不能重新启动 azure 功能

我尝试使用 API https://docs.microsoft.com/en-us/rest/api/azure/ 示例 API 请求,您可以在其中列出 azure 函数 GET https://management.azure.com/中的函数订阅/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions?api-version=2016-08-01

但是没有功能可以从我研究的内容中重新启动 azure 功能

基本上我想重新启动 Azure 功能,就像我要点击此按钮一样 Azure 功能手动停止/启动和重新启动 Azure 门户中的按钮

因为在某些情况下,由于外部 API,每次运行时作业都会进入错误状态,我无法控制并手动点击重新启动会使作业再次运行

标签: azureazure-functionsazure-api-managementazureportal

解决方案


重新启动函数的另一种方法是使用 host.json 文件中的“watchDirectories”设置。如果你的 host.json 看起来像这样:

{
    "version": "2.0",
    "watchDirectories": [ "Toggle" ]
}

您可以通过在函数中使用以下语句来切换重新启动:

System.IO.File.WriteAllText("D:/home/site/wwwroot/Toggle/restart.conf", DateTime.Now.ToString());     

查看日志,该函数在检测到目录中的文件更改时重新加载:

Watched directory change of type 'Changed' detected for 'D:\home\site\wwwroot\Toggle\restart.conf'  
Host configuration has changed. Signaling restart

推荐阅读