Python发出10个请求时会休眠

时间:2017-02-21 20:25:34

标签: python sleep

我正在使用

requests.get() 

一次又一次地呼叫同一台服务器,但我每分钟限制为30次。当我发出30个请求时,如何使程序暂停一会儿。挑战是

requests.get()

在我的代码中遍布各处,我无法将它们放在循环中。

1 个答案:

答案 0 :(得分:2)

您可以使用Adapter Pattern来包装请求。像这样:

class RequestLimiter:
    def __init__(self):
        self.count = 0
    def get(self, *args, **kwargs):
        if self.count == 30:
            time.sleep(60)
            self.count = 0
            return requests.get(*args, **kwargs)
        else:
            self.count += 1
            requests.get(*args, **kwargs)

def main():
    # If this is through your whole program, 
    # you might want to make this global- be careful with that!
    r = RequestLimiter()
    r.get(url, args)

根据您的要求,您可能想要更改其中一些。例如,正如它的编码一样,无论您的get成功还是失败,您的计数都会增加。这可能是也可能不是你想要的。如果您决定创建此类的全局实例,那么您必须担心count变量的并发访问(如果您使用并发)。