Skip to content

Commit 9bc1146

Browse files
authored
Merge pull request #19 from kmaehashi/sleep-within-request
Inject a sleep when making a request instead of pagerize
2 parents edb11dd + 23a2bd6 commit 9bc1146

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

atwiki/core.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ class AtWikiAPI(object):
2525
def __init__(self, uri, **kwargs):
2626
self._uri = uri
2727
self._user_agent = kwargs.get('user_agent', 'Mozilla/5.0 (AtWikiPython)')
28-
self._sleep = kwargs.get('sleep', 10)
28+
self._sleep = kwargs.get('sleep', 10) # in seconds
29+
self._last_request = 0.0 # epoch second last request has made
2930

3031
def get_list(self, tag=None, _start=1):
3132
index = _start
@@ -50,7 +51,6 @@ def get_list(self, tag=None, _start=1):
5051
yield {'id': page_id, 'name': page_name}
5152
if count == 0 or is_end: break
5253
index += 1
53-
time.sleep(self._sleep)
5454

5555
def get_tags(self, sort='', _start=1):
5656
index = _start
@@ -73,7 +73,6 @@ def get_tags(self, sort='', _start=1):
7373
if not pager:
7474
break
7575
index += 1
76-
time.sleep(self._sleep)
7776

7877
def get_source(self, page_id, generation=0):
7978
soup = self._request(self._uri.backup_source(page_id, generation))
@@ -103,4 +102,8 @@ def search(self, keyword, is_and=True, wiki_syntax=False, complete=True):
103102

104103
def _request(self, url, data=None):
105104
req = Request(url, headers={'User-Agent': self._user_agent}, data=data)
105+
sleep = self._last_request + self._sleep - time.time()
106+
if 0 < sleep:
107+
time.sleep(sleep)
108+
self._last_request = time.time()
106109
return BeautifulSoup(urlopen(req).read(), 'html5lib')

0 commit comments

Comments
 (0)