【发布时间】:2019-01-29 11:48:33
【问题描述】:
我有一个在 Azure 应用服务上运行的 .NET 应用。 设置了自动缩放,有时它会增加到 10 个实例,然后又回到 3 个。
我有一个后台任务(hangfire),每小时在其中一个实例上运行一次(我不知道在哪个实例上,它是随机的)。
有没有办法告诉 Azure 在缩减期间不要删除当前正在执行任务的服务器?
【问题讨论】:
-
你需要设计你的后台任务来优雅地关闭并从它离开的地方拿起,你还需要使用取消令牌,因为当发生缩减时,它会给你的应用程序一些时间完成工作,如果它不完整的线程将被杀死
-
@VolodymyrBilyachat 你有关于 Azure 应用服务上的 CancellationToken 的更多信息的链接吗?我在 Azure 中找不到任何东西。如果我可以收到来自 Azure 的通知,它将关闭一个实例,我可以重新安排当前正在执行的任务。
-
好吧,它不是 azure 特定的,而是更异步的 docs.hangfire.io/en/latest/background-methods/…
-
同样适用于 azure 函数 docs.microsoft.com/en-us/azure/azure-functions/…
-
@VolodymyrBilyachat 所以基本上对于hangfire案例,我应该输入:cancellationToken.ThrowIfCancellationRequested();在任务的每个逻辑步骤之前。例如:cancelToken.ThrowIfCancellationRequested(); // 从远程服务器下载文件并解析它 cancelToken.ThrowIfCancellationRequested(); // 对于文件的每一行 { cancelToken.ThrowIfCancellationRequested(); //在那条线上工作}听起来正确吗?
标签: azure azure-web-app-service