首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免在循环中调用web?

如何避免在循环中调用web?
EN

Stack Overflow用户
提问于 2020-08-20 04:35:01
回答 1查看 664关注 0票数 0

我有两个网络api

  1. Publish API -将数据从一个数据库复制到另一个数据库。通常需要10-15分钟才能完成process.
  2. GetStatus API -获取发布API的状态.有效状态正在运行、失败和完成。

现在,我调用发布API,然后在循环中调用GetStatus API,服务器装载了太多的GetStatus API请求。每隔10-15毫秒就会调用GetStatus api。

如何避免这种情况?任何更好的解决方案都应该受到高度赞赏。

EN

回答 1

Stack Overflow用户

发布于 2020-08-20 06:36:31

好吧..。你应该在循环中等着..。

理想情况下,您使用的是异步,因此您可以:

代码语言:javascript
复制
ApiStatus status = null;
do {
    var status = await api.GetStatus();
    await Task.Deplay(TimeSpan.FromSeconds(5), cancellationToken);
  
} while (status == ApiStatus.Running);

如果不是这样的话;

代码语言:javascript
复制
while (!_stopEvent.WaitOne(TimeSpan.FromSeconds(5)){
    var status = api.GetStatus();
    if (status != ApiStatus.Running) break;
}

至少,天真的实现是你不应该做的,但是为了给你展示最简单的情况.

代码语言:javascript
复制
while (true){
    var status = api.GetStatus();
    if (status != ApiStatus.Running) break;
    Thread.Sleep(5000);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63498389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档