3

我有一个从互联网上抓取文件并处理它的网络作业。我已将它绑定到每天午夜运行的调度程序。

有时,抓取文件进程失败并引发异常,导致 Web 作业崩溃并停止,直到第二天调度程序再次启动。

为了阻止应用程序崩溃,我有一个选择是用 try-catch 块包装它并处理错误。但我希望能够在失败后重新运行网络作业。

有没有办法让我告诉 azure 调度程序在任务失败后重新运行 N 次?

例如,我希望网络作业在失败 5 分钟后重新运行最多 5 次。我不想等待调度程序在第二天启动。

4

1 回答 1

4

有没有办法让我告诉 azure 调度程序在任务失败后重新运行 N 次?

Azure 调度程序不提供验证“远程”执行是否成功的方法,但您可以使用“存储队列”操作类型将消息放入指定队列并在 Web 作业本身中实现相同的行为。Azure Web Jobs SDK将处理传入消息并在引发异常时重试最多 5 次,队列处理器也是可扩展的(自 1.1 起),因此您可以轻松实现指数重试策略或您需要的任何策略(通过扩展QueueProcessorQueueProcessorFactory类)。

脚步:

  1. 更新您的实际 Web 作业以使用队列(通过使用[QueueTrigger("myqueue")]),并将其配置为“连续运行”(在 VS 项目和 azure Web 应用程序中)。
  2. 创建“存储队列”类型的 Azure 调度程序作业,这会将消息推送到提到的队列中。

在此处输入图像描述

注意:此选项需要您的 Web 应用程序中的标准层(由于“连续运行”)

于 2015-09-26T20:54:45.913 回答