【问题标题】:Check if Web API request is complete检查 Web API 请求是否完成
【发布时间】:2016-06-21 10:26:22
【问题描述】:

我有一个 Windows 服务,它每 5 分钟向 Web API 控制器发出一个请求。 Web API 将从应用程序 A 检索一些数据并对其进行处理,然后将其放入应用程序 B。基本上它每 5 分钟从 A 查找新的和更新的记录 - 我有不同的记录类型,间隔可能会有所不同,具体取决于变化的频率。每条记录都有一个 Modified_Date 列。此列将用于从 A 检索数据。我有一个表,Windows 服务使用它来触发请求。此表存储每种记录类型的最后修改日期。因此,在每个请求中说我检索 1000 条记录,我将获得这 1000 条记录的最大日期,并在下一次请求时存储在数据库中,然后我将使用这个日期。

现在我的问题有时取决于网络速度和检索到的记录数,这五分钟可能会在第一个请求仍在执行时失效。我不希望在第一个请求完成之前开始第二个请求。

如何才能最好地检查第一个请求是否已完成?

【问题讨论】:

  • 您说请求每 5 分钟触发一次。您是否预计应用程序 A 将数据放入应用程序 B 所需的处理需要 5 分钟?
  • 应用程序 A 中的数据检索出了点问题。我怀疑数据库和/或查询设计不当。简单地检索几千条记录的任何查询都不应该花费将近 5 分钟的时间。我建议您发布一个数据库问题,其中包含您的数据库和查询的详细信息,以帮助您弄清楚为什么需要这么长时间。
  • @ext0 是的,在某些情况下,我预计它需要很长时间,因为它每分钟生成超过 350000 个,具体取决于每个月的时间。
  • @ClintB 不幸的是,我无权访问数据库。我们正在将两个系统集成在一起。
  • 您是否有硬性要求将调用控制器的逻辑保留在 Windows 服务中?或者其他方式也可以,只要您在 5 分钟内一次只能触发一个请求?

标签: c# asp.net-web-api httpclient


【解决方案1】:

您可以创建一个单例服务来保存一个标志,以检查上一个请求是否已完成。请求开始时设置标志 end 结束时释放标志。

【讨论】:

    猜你喜欢
    • 2015-08-14
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 2021-12-20
    • 2018-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    相关资源
    最近更新 更多