我需要调用一个JSON api,它只允许每秒有限数量的请求,以确保不会从特定的IP发生DDOS。 请求需要多长时间并不重要,因为这将在一夜之间作为自动化过程完成,但我需要在每个请求之间暂停某些方式以确保我的IP不会暂时列入黑名单。
现在我要完成Thread.Sleep(1000)以确保只发送一个请求,但是在asp.net vNext Thread.Sleep没有工作/存在所以我不能这样做。
有没有其他或更好的方法来处理我需要做的事情? 没有批量API,因此必须一次完成1个请求。
提前致谢。
答案 0 :(得分:11)
await System.Threading.Tasks.Task.Delay(1000)
或
System.Threading.Tasks.Task.Delay(1000).Wait()
另请注意, await Task.Delay 使您的执行线程可以被其他工作重用,但Thread.Sleep会阻塞。
答案 1 :(得分:3)
你错过了依赖。如果您的代码不是异步,则不应使用Task.Delay
...您应该使用Thread.Sleep()
或正常。
只需添加以下依赖项:
"System.Threading.Thread": "4.0.0-beta-23516"
然后您可以照常使用Thread.Sleep
。
当然,如果您 编写异步代码,那么await Task.Delay(...)
也是合适的 - 再次,就像正常一样。