我有一个web api执行任务,目前基于数据需要几分钟。这会随着时间的推移而增加
我有Azure调度程序作业,每10分钟调用一次此web api。我想避免10分钟后第二次调用与第一次调用重叠的情况,因为执行时间增加了。如何在网络api中放置智能,以便在第一个呼叫正在运行时检测并避免第二次呼叫。
我可以使用AutoResetEvent或锁定语句吗?或者保留一个存储标志以指示忙碌/免费更好的选择?
答案 0 :(得分:0)
持久状态最好通过存储进行管理。您的长时间运行活动是否可以通过角色重置持续存在(毕竟,只要满足可用性限制,就可以随时重置角色)。
确保您考虑到长时间运行的作业中途终止的情况。
答案 1 :(得分:0)
Windows Azure Scheduler的超时时间为30秒。因此,我们不能拥有调度程序调用的长时间运行任务。两个后续呼叫的重叠是不可能的。
似乎从WebAPI执行长时间运行任务是一个糟糕的设计,因为应用程序池的回收。我最终使用Azure服务总线。请求任务时,会将消息发布到队列中。这样,webapi占用的时间有限。