【问题标题】:Stop Multiple WebAPI requests from Azure Scheduler停止来自 Azure 调度程序的多个 WebAPI 请求
【发布时间】:2015-05-18 09:14:28
【问题描述】:

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

我有 Azure 调度程序作业,它每 10 分钟调用一次此 Web api。我想避免由于执行时间增加而导致 10 分钟后的第二次呼叫与第一次呼叫重叠的情况。如果第一个调用正在运行,我如何将智能放在 web api 中,以便我检测并避免第二个调用。

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

【问题讨论】:

    标签: azure asp.net-web-api azure-storage


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多