Python 在发出 10 个请求时休眠

标签 python sleep

我正在使用

requests.get() 

一次又一次地调用同一台服务器,但我限制为每分钟 30 个请求。当我发出 30 个请求时,如何让程序休眠一分钟。挑战是

requests.get()

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

最佳答案

您可以使用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 变量的并发访问(如果您使用并发)。

关于Python 在发出 10 个请求时休眠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42377260/

相关文章:

python - 递归引用列表本身

java - 在队列中等待的线程,Java

java - 两个给定时间之间的等待时间

multithreading - QThread 在主线程上休眠

c++ - C++ 的跨平台 sleep 功能

python - celery worker sleep 无法正常工作

python - 没有行重叠的 Pandas Merge DataFrames

python - 为什么我生成的 WHERE 子句不正确?

python - 如何在python中合并2列

python - 不平衡-学习: Import Error: cannot import name 'MultiOutputMixin'