当我可以简单地使用time.sleep()时,throttler类的用途是什么

2024-04-24 17:00:28 发布

您现在位置:Python中文网/ 问答频道 /正文

class Throttle:
    #add delay between download for eacch delay
    def __init__(self,delay):
        #amount of delay between downloads
        self.delay=delay
        #timestamp of when a domain was last accessed
        self.domains={}

    def wait(self,url):
        domain=urlparse.urlparse(url).netloc
        last_accessed=self.domains.get(domain)
        if self.delay > 0 and last_accessed is not None:
            sleeps_secs=self.delay-(datetime.datetime.now()-last_accessed).seconds
            if sleeps_secs > 0:
                #domain has been recently accessed
                #so we need to sleep
                time.sleep(sleeps_secs)
        #update last accessed time
        self.domains[domain]=datetime.datetime.now()

有人能给我解释一下这是怎么工作的,为什么有用吗。。我从一本书上得到的, 还有,为什么不直接使用time.sleep(2)而不是这个呢


Tags: ofselfurldatetimetimedomaindefsleep