停止来自Azure计划程序的多个WebAPI请求

停止来自Azure计划程序的多个WebAPI请求,azure,asp.net-web-api,azure-storage,Azure,Asp.net Web Api,Azure Storage,我有一个web api,它执行一项任务,根据数据,目前需要几分钟的时间。这可能会随着时间的推移而增加 我有Azure调度程序作业,它每10分钟调用一次web api。我希望避免10分钟后的第二次调用与第一次调用重叠的情况,因为执行时间增加了。如何将smarts放入web api中,以便在第一个调用正在运行时检测并避免第二个调用 我可以使用AutoResetEvent或lock语句吗?或者保留存储标志以指示忙/闲是更好的选择?持久状态最好通过存储进行管理。通过角色重置,您的长期运行活动能否持久(毕

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

我有Azure调度程序作业,它每10分钟调用一次web api。我希望避免10分钟后的第二次调用与第一次调用重叠的情况,因为执行时间增加了。如何将smarts放入web api中,以便在第一个调用正在运行时检测并避免第二个调用


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

持久状态最好通过存储进行管理。通过角色重置,您的长期运行活动能否持久(毕竟,只要满足可用性约束,就可以随时重置角色)


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

Windows Azure计划程序有30秒超时。因此,我们不能让调度程序调用长时间运行的任务。后续两次通话的重叠是不可能的

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