From a1905bdb225e3e2bae7f61cbc8ebccfe26fe074e Mon Sep 17 00:00:00 2001 From: calvin Date: Tue, 23 May 2006 16:33:00 +0000 Subject: [PATCH] support timeout in get() method git-svn-id: https://linkchecker.svn.sourceforge.net/svnroot/linkchecker/trunk/linkchecker@3285 e7d03fd6-7b0d-0410-9947-9c21f3af8025 --- linkcheck/cache/urlqueue.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/linkcheck/cache/urlqueue.py b/linkcheck/cache/urlqueue.py index e4b1b87e..d162e363 100644 --- a/linkcheck/cache/urlqueue.py +++ b/linkcheck/cache/urlqueue.py @@ -49,7 +49,7 @@ class UrlQueue (Queue.Queue): self.checked = {} self.shutdown = False - def get (self): + def get (self, timeout=None): """ Get first not-in-progress url from the queue and return it. If no such url is available return None. The @@ -57,8 +57,18 @@ class UrlQueue (Queue.Queue): """ self.not_empty.acquire() try: - while self._empty(): - self.not_empty.wait() + if timeout is None: + while self._empty(): + self.not_empty.wait() + else: + if timeout < 0: + raise ValueError("'timeout' must be a positive number") + endtime = time.time() + timeout + while self._empty(): + remaining = endtime - time.time() + if remaining <= 0.0: + raise Empty + self.not_empty.wait(remaining) url_data = self._get() key = url_data.cache_url_key if url_data.has_result: