mirror of
https://github.com/lilydjwg/nvchecker.git
synced 2025-03-10 06:14:02 +00:00
parent
f482ee6499
commit
a6315985d0
3 changed files with 20 additions and 7 deletions
|
@ -1,4 +1,4 @@
|
|||
# MIT licensed
|
||||
# Copyright (c) 2013-2018 lilydjwg <lilydjwg@gmail.com>, et al.
|
||||
|
||||
__version__ = '1.3'
|
||||
__version__ = '1.4dev'
|
||||
|
|
|
@ -104,12 +104,14 @@ def write_verfile(file, versions):
|
|||
|
||||
class Source:
|
||||
oldver = newver = None
|
||||
tries = 1
|
||||
|
||||
def __init__(self, file):
|
||||
def __init__(self, file, tries=1):
|
||||
self.config = config = configparser.ConfigParser(
|
||||
dict_type=dict, allow_no_value=True
|
||||
)
|
||||
self.name = file.name
|
||||
self.tries = tries
|
||||
config.read_file(file)
|
||||
if '__config__' in config:
|
||||
c = config['__config__']
|
||||
|
@ -141,6 +143,7 @@ class Source:
|
|||
self.oldvers = {}
|
||||
self.curvers = self.oldvers.copy()
|
||||
|
||||
tries = self.tries
|
||||
token_q = asyncio.Queue(maxsize=self.max_concurrent)
|
||||
|
||||
for _ in range(self.max_concurrent):
|
||||
|
@ -149,10 +152,18 @@ class Source:
|
|||
async def worker(name, conf):
|
||||
await token_q.get()
|
||||
try:
|
||||
ret = await get_version(name, conf, keyman=self.keymanager)
|
||||
return name, ret
|
||||
except Exception as e:
|
||||
return name, e
|
||||
for i in range(tries):
|
||||
try:
|
||||
ret = await get_version(
|
||||
name, conf, keyman=self.keymanager)
|
||||
return name, ret
|
||||
except Exception as e:
|
||||
if i + 1 < tries:
|
||||
logger.warning('failed, retrying',
|
||||
name=name, exc_info=e)
|
||||
await asyncio.sleep(i)
|
||||
else:
|
||||
return name, e
|
||||
finally:
|
||||
await token_q.put(True)
|
||||
|
||||
|
|
|
@ -28,6 +28,8 @@ def main():
|
|||
parser = argparse.ArgumentParser(description='New version checker for software')
|
||||
parser.add_argument('-n', '--notify', action='store_true', default=False,
|
||||
help='show desktop notifications when a new version is available')
|
||||
parser.add_argument('-t', '--tries', default=1, type=int, metavar='N',
|
||||
help='try N times when errors occur')
|
||||
core.add_common_arguments(parser)
|
||||
args = parser.parse_args()
|
||||
if core.process_common_arguments(args):
|
||||
|
@ -36,7 +38,7 @@ def main():
|
|||
if not args.file:
|
||||
return
|
||||
|
||||
s = Source(args.file)
|
||||
s = Source(args.file, args.tries)
|
||||
|
||||
ioloop = asyncio.get_event_loop()
|
||||
ioloop.run_until_complete(s.check())
|
||||
|
|
Loading…
Add table
Reference in a new issue