停止来自 Azure 调度程序的多个 WebAPI 请求

Stop Multiple WebAPI requests from Azure Scheduler

我有一个网络 api 可以执行一项任务,目前根据数据需要几分钟时间。这会随着时间的推移而增加。

我有 Azure 调度程序作业,它每 10 分钟调用一次此 Web api。我想避免 10 分钟后第二次调用与第一次调用重叠的情况,因为执行时间增加了。我如何将智能放在网络 api 中,以便在第一次调用 运行 时检测并避免第二次调用。

我可以使用 AutoResetEvent 或 lock 语句吗?或者保留存储标志以指示 busy/free 更好的选择?

持久状态最好通过存储进行管理。你的 long-运行 activity 能否通过角色重置持续存在(毕竟,只要满足可用性限制,角色就可以随时重置)。

确保您仔细考虑长时间的 运行 工作中途终止的情况。

Windows Azure 调度程序有 30 秒超时。所以我们不能让调度器调用一个很长的 运行 任务。 2 个后续调用的重叠是毫无疑问的。

此外,似乎从 WebAPI 中执行较长的 运行 任务是一个糟糕的设计,因为应用程序池的回收。我最终使用了 Azure 服务总线。当请求任务时,消息将发布到队列中。这样webapi占用的时间是有限的