如何解决如何避免在循环中调用Web API?
我有两个网络API
- 发布API-将数据从一个数据库复制到另一个数据库。通常需要10到15分钟才能完成该过程。
- GetStatus API-获取发布API的状态。有效状态为正在运行,失败和已完成。
现在,我正在调用 Publish API ,然后在循环中我正在调用 GetStatus API ,并且服务器加载了对 GetStatus API的太多请求。每隔10-15毫秒就会调用一次GetStatus api。
如何避免这种情况?任何更好的解决方案都应该受到高度赞赏。
解决方法
嗯...你应该在循环中等待...
理想情况下,您正在使用异步,因此您可以这样做:
ApiStatus status = null;
do {
var status = await api.GetStatus();
await Task.Deplay(TimeSpan.FromSeconds(5),cancellationToken);
} while (status == ApiStatus.Running);
或者如果不是这样的话
while (!_stopEvent.WaitOne(TimeSpan.FromSeconds(5)){
var status = api.GetStatus();
if (status != ApiStatus.Running) break;
}
至少,天真的实现是您实际上不应该执行的,但是向您展示了最简单的情况...
while (true){
var status = api.GetStatus();
if (status != ApiStatus.Running) break;
Thread.Sleep(5000);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。