我希望使用grequests.send
发送两个异步请求,它们之间有一个短但确切的延迟(比如说20毫秒)。我只想在发出两个请求后处理响应。
在两个发送之间放置time.sleep
不起作用,因为sleep
在请求2发送之前向请求1的响应处理程序产生,因此请求2被迟发。
grequests.send(req1, grequests.Pool(1))
time.sleep(delay)
grequests.send(req2, grequests.Pool(1)) # Request is sent late
如何确保上面的整个块以原子方式运行,以确保尽可能接近请求之间的预期等待时间,而无需繁忙的等待?
答案 0 :(得分:0)
最优雅的方法是不要修补补丁时间。所以这样做:
from gevent import monkey
monkey.patch_all(time=False)
然后当你使用time.sleep
时,它不会屈服。
如果您使用gevent.sleep
,如果您还需要该功能,它仍然可以睡眠和屈服。
请注意,如果您使用其他使用time.sleep
的库,那么它们将不会在此时产生。但它很少见,所以不应成为问题。