Package concurrent_tree_crawler :: Package html_multipage_navigator :: Module throttled_web_browser
[hide private]
[frames] | no frames]

Source Code for Module concurrent_tree_crawler.html_multipage_navigator.throttled_web_browser

 1  from concurrent_tree_crawler.html_multipage_navigator.web_browser import \ 
 2          AbstractWebBrowser, AbstractWebBrowserCreator 
 3   
4 -class ThrottledWebBrowserWrapper(AbstractWebBrowser):
5 - def __init__(self, browser, token_bucket):
6 """ 7 @type browser: L{AbstractWebBrowser} 8 @type token_bucket: L{TokenBucket} 9 """ 10 self.__br = browser 11 self.__token_bucket = token_bucket
12
13 - def open(self, address):
14 self.__token_bucket.get_token() 15 self.__br.open(address)
16
17 - def response(self):
18 return self.__br.response()
19
20 - def back(self, steps=1):
21 self.__br.back(steps)
22
23 -class ThrottledWebBrowserCreator(AbstractWebBrowserCreator):
24 - def __init__(self, browser_creator, token_bucket):
25 """ 26 @param browser_creator: a creator of browsers that will be throttled 27 @type browser_creator: L{AbstractWebBrowserCreator} 28 @type token_bucket: L{TokenBucket} 29 """ 30 self.__browser_creator = browser_creator 31 self.__token_bucket = token_bucket
32
33 - def create(self):
34 bare_browser = self.__browser_creator.create() 35 return ThrottledWebBrowserWrapper(bare_browser, self.__token_bucket)
36