Refactor set_sleep(_override) a bit better.

This commit is contained in:
Jim Miller 2021-01-29 18:06:09 -06:00
parent 8ba5d2c423
commit 0c0534ea74
3 changed files with 16 additions and 26 deletions

View file

@ -1312,7 +1312,7 @@ class FanFicFarePlugin(InterfaceAction):
b = minslp - m
slp = min(maxslp,m*float(options['ffnetcount'])+b)
#print("m:%s b:%s = %s"%(m,b,slp))
configuration.set_sleep(slp)
configuration.set_sleep_override(slp)
if not bgmeta:
story = self.get_story_metadata_only(adapter)

View file

@ -538,6 +538,7 @@ class Configuration(ConfigParser):
ConfigParser.__init__(self)
self.fetcher = None # the network layer for getting pages the
self.sleeper = None
# caching layer for getting pages, created now for
# get_empty_pagecache() etc.
self.cache = fetcher.BasicCache()
@ -964,15 +965,16 @@ class Configuration(ConfigParser):
self.getConfigList)
########################################################
## Adding fetcher decorators. Order matters--last in,
## Adding fetcher decorators. Order matters--last added,
## first called. If ProgressBarDecorator is added before
## Cache, it's never called for cache hits, for example.
fetcher.SleepDecorator().decorate_fetcher(self.fetcher)
## doesn't sleep when fromcache==True
## saved for set_sleep
self.sleeper = fetcher.SleepDecorator()
self.sleeper.decorate_fetcher(self.fetcher)
# cache decorator terminates the chain when found. Cache
# created in __init__ because of get_empty_pagecache()
# etc, but not used until now.
## cache decorator terminates the chain when found.
logger.debug("use_pagecache:%s"%self.getConfig('use_pagecache'))
if self.getConfig('use_pagecache'):
fetcher.BasicCacheDecorator(self.cache).decorate_fetcher(self.fetcher)
@ -986,8 +988,8 @@ class Configuration(ConfigParser):
## Or Fetcher
## used by plugin to change time for ffnet.
def set_sleep(self,val):
return self.get_fetcher().set_sleep(val)
def set_sleep_override(self,val):
return self.sleeper.set_sleep_override(val)
def get_cookiejar(self,filename=None):
return self.get_fetcher().get_cookiejar(filename)

View file

@ -108,21 +108,15 @@ class ProgressBarDecorator(FetcherDecorator):
class SleepDecorator(FetcherDecorator):
def __init__(self):
super(SleepDecorator,self).__init__()
self.override_sleep = None
self.sleep_override = None
def decorate_fetcher(self,fetcher):
super(SleepDecorator,self).decorate_fetcher(fetcher)
fetcher.set_sleep = partial(self.fetcher_set_sleep,
fetcher,
fetcher.set_sleep)
def fetcher_set_sleep(self,
fetcher,
chainfn,
val):
## used by plugin for ffnet variable timing
def set_sleep_override(self,val):
logger.debug("\n===========\n set sleep time %s\n==========="%val)
self.override_sleep = val
return chainfn(val)
self.sleep_override = val
def fetcher_do_request(self,
fetcher,
@ -149,9 +143,8 @@ class SleepDecorator(FetcherDecorator):
if extrasleep:
logger.debug("extra sleep:%s"%extrasleep)
time.sleep(float(extrasleep))
t = None
if self.override_sleep:
t = float(self.override_sleep)
if self.sleep_override:
t = float(self.sleep_override)
elif fetcher.getConfig('slow_down_sleep_time'):
t = float(fetcher.getConfig('slow_down_sleep_time'))
## sleep randomly between 0.5 time and 1.5 time.
@ -296,11 +289,6 @@ class Fetcher(object):
ignore_discard=True,
ignore_expires=True)
# used by plugin for ffnet variable timing
## this will need to be moved. XXX
def set_sleep(self,val):
pass
def make_headers(self,url,referer=None):
headers = {}
headers['User-Agent']=self.getConfig('user_agent')