睡觉不屈服有可能吗



我想使用grequests.send发送两个异步请求,它们之间有一个短但精确的延迟(比如20ms)。我只想在两个请求都发送后处理响应。

在两次发送之间放置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

我如何确保上面的整个块以原子方式运行,以确保尽可能接近请求之间的预期等待时间,而不会出现繁忙的等待?

做到这一点最优雅的方法是不占用时间。这样做:

from gevent import monkey
monkey.patch_all(time=False)

然后,当您使用time.sleep时,它将不会屈服。

如果您使用gevent.sleep,如果您也需要该功能,它仍然会休眠并屈服。

请注意,如果您使用其他使用time.sleep的库,那么它们在这一点上不会屈服。但它很罕见,所以不应该成为问题。

相关内容

  • 没有找到相关文章

最新更新