Azure-Function Deployment 终止了我的 运行 进程..我可以避免吗?

Azure-Function Deployment kill my running process..can i avoid?

我有几个共享相同代码的 Azure 函数。所以我创建了一个批处理文件来发布我的库。这是一个简单的 bat 文件。对于我的每个 azure 函数,它都连接到主机并使用 robocopy 来同步文件夹。

但是,每次我发布时,当前 运行 功能都会被删除。我想避免这种情况。有没有办法让一个运行函数自然终止它的工作?

我认为这是可能的,因为当我发布时,我并没有重新编写真正的 运行 dll,而是将文件复制到 <azure-function-url>/site/wwwroot 文件夹中。

注意: 该函数在没有等待的情况下调用异步方法。源更改时异步方法未完成工作。 (我不关注这个问题,感谢马特的评论..睁开眼睛)

函数运行时旨在允许函数在主机重新启动时正常退出,请参阅 here

不等待您的异步调用是函数中的一种反模式,因为我们无法跟踪您的函数执行情况。我们使用 returned Task 来确定您的函数何时完成。如果您不 return 一个 Task,我们假设您的函数在 return 时已经完成。

在您的情况下,这意味着当您的孤立异步调用 运行 时,我们将在重新启动时终止主机。如果您未能等待异步调用,我们也不保证成功:

  • 日志记录
  • 输出绑定
  • 异常处理

做:static async Task Run(...){ await asyncMethod(); }

不要:static void Run(...){ asyncMethod(); }