mirror of
https://github.com/lilydjwg/nvchecker.git
synced 2025-03-10 06:14:02 +00:00
parent
8ade0f68b0
commit
b014759f81
6 changed files with 39 additions and 5 deletions
|
@ -162,7 +162,7 @@ newver
|
||||||
Specify a version record file to store the new version info.
|
Specify a version record file to store the new version info.
|
||||||
|
|
||||||
proxy
|
proxy
|
||||||
The HTTP proxy to use. The format is ``host:port``, e.g. ``localhost:8087``.
|
The HTTP proxy to use. The format is ``proto://host:port``, e.g. ``http://localhost:8087``.
|
||||||
|
|
||||||
max_concurrent
|
max_concurrent
|
||||||
Max number of concurrent jobs. Default: 20.
|
Max number of concurrent jobs. Default: 20.
|
||||||
|
|
|
@ -38,6 +38,7 @@ def process_common_arguments(args):
|
||||||
'''return True if should stop'''
|
'''return True if should stop'''
|
||||||
processors = [
|
processors = [
|
||||||
slogconf.exc_info,
|
slogconf.exc_info,
|
||||||
|
slogconf.filter_exc,
|
||||||
]
|
]
|
||||||
logger_factory = None
|
logger_factory = None
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,12 @@ import logging
|
||||||
import os
|
import os
|
||||||
import io
|
import io
|
||||||
import traceback
|
import traceback
|
||||||
|
import sys
|
||||||
|
|
||||||
import structlog
|
import structlog
|
||||||
|
|
||||||
|
from .source import HTTPError, NetworkErrors
|
||||||
|
|
||||||
def _console_msg(event):
|
def _console_msg(event):
|
||||||
evt = event['event']
|
evt = event['event']
|
||||||
if evt == 'up-to-date':
|
if evt == 'up-to-date':
|
||||||
|
@ -36,6 +39,24 @@ def exc_info(logger, level, event):
|
||||||
event['exc_info'] = True
|
event['exc_info'] = True
|
||||||
return event
|
return event
|
||||||
|
|
||||||
|
def filter_exc(logger, level, event):
|
||||||
|
exc_info = event.get('exc_info')
|
||||||
|
if not exc_info:
|
||||||
|
return event
|
||||||
|
|
||||||
|
if exc_info is True:
|
||||||
|
exc = sys.exc_info()[1]
|
||||||
|
else:
|
||||||
|
exc = exc_info
|
||||||
|
|
||||||
|
if isinstance(exc, HTTPError):
|
||||||
|
if exc.code == 599: # tornado timeout
|
||||||
|
del event['exc_info']
|
||||||
|
elif isinstance(exc, NetworkErrors):
|
||||||
|
del event['exc_info']
|
||||||
|
event['error'] = exc
|
||||||
|
return event
|
||||||
|
|
||||||
def stdlib_renderer(logger, level, event):
|
def stdlib_renderer(logger, level, event):
|
||||||
# return event unchanged for further processing
|
# return event unchanged for further processing
|
||||||
std_event = _console_msg(event.copy())
|
std_event = _console_msg(event.copy())
|
||||||
|
@ -45,6 +66,8 @@ def stdlib_renderer(logger, level, event):
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
msg = std_event.pop('msg', std_event.pop('event'))
|
msg = std_event.pop('msg', std_event.pop('event'))
|
||||||
exc_info = std_event.pop('exc_info', None)
|
exc_info = std_event.pop('exc_info', None)
|
||||||
|
if 'error' in std_event:
|
||||||
|
std_event['error'] = repr(std_event['error'])
|
||||||
getattr(logger, level)(
|
getattr(logger, level)(
|
||||||
msg, exc_info = exc_info, extra=std_event,
|
msg, exc_info = exc_info, extra=std_event,
|
||||||
)
|
)
|
||||||
|
|
|
@ -6,7 +6,7 @@ import asyncio
|
||||||
import aiohttp
|
import aiohttp
|
||||||
connector = aiohttp.TCPConnector(limit=20)
|
connector = aiohttp.TCPConnector(limit=20)
|
||||||
|
|
||||||
__all__ = ['session', 'HTTPError']
|
__all__ = ['session', 'HTTPError', 'NetworkErrors']
|
||||||
|
|
||||||
class HTTPError(Exception):
|
class HTTPError(Exception):
|
||||||
def __init__(self, code, message, response):
|
def __init__(self, code, message, response):
|
||||||
|
@ -25,9 +25,17 @@ class BetterClientSession(aiohttp.ClientSession):
|
||||||
raise HTTPError(res.status, res.reason, res)
|
raise HTTPError(res.status, res.reason, res)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
session = BetterClientSession(connector=connector)
|
session = BetterClientSession(
|
||||||
|
connector = connector,
|
||||||
|
timeout = aiohttp.ClientTimeout(total=20),
|
||||||
|
)
|
||||||
|
|
||||||
@atexit.register
|
@atexit.register
|
||||||
def cleanup():
|
def cleanup():
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
loop.run_until_complete(session.close())
|
loop.run_until_complete(session.close())
|
||||||
|
|
||||||
|
NetworkErrors = (
|
||||||
|
asyncio.TimeoutError,
|
||||||
|
aiohttp.ClientConnectorError,
|
||||||
|
)
|
||||||
|
|
|
@ -15,7 +15,7 @@ try:
|
||||||
except ImportError:
|
except ImportError:
|
||||||
pycurl = None
|
pycurl = None
|
||||||
|
|
||||||
__all__ = ['session', 'HTTPError']
|
__all__ = ['session', 'HTTPError', 'NetworkErrors']
|
||||||
|
|
||||||
client = AsyncHTTPClient()
|
client = AsyncHTTPClient()
|
||||||
HTTP2_AVAILABLE = None if pycurl else False
|
HTTP2_AVAILABLE = None if pycurl else False
|
||||||
|
@ -73,3 +73,5 @@ async def read(self):
|
||||||
HTTPResponse.json = json_response
|
HTTPResponse.json = json_response
|
||||||
HTTPResponse.read = read
|
HTTPResponse.read = read
|
||||||
session = Session()
|
session = Session()
|
||||||
|
|
||||||
|
NetworkErrors = ()
|
||||||
|
|
|
@ -25,7 +25,7 @@ github = lilydjwg/nvchecker
|
||||||
[ssed]
|
[ssed]
|
||||||
url = http://sed.sourceforge.net/grabbag/ssed/
|
url = http://sed.sourceforge.net/grabbag/ssed/
|
||||||
regex = The current version is ([\d.]+)\.
|
regex = The current version is ([\d.]+)\.
|
||||||
proxy = localhost:8087
|
proxy = http://localhost:8087
|
||||||
|
|
||||||
[PySide]
|
[PySide]
|
||||||
pypi = PySide
|
pypi = PySide
|
||||||
|
|
Loading…
Add table
Reference in a new issue