mirror of
https://github.com/lilydjwg/nvchecker
synced 2025-03-09 12:57:39 +00:00
parent
8ade0f68b0
commit
b014759f81
@ -162,7 +162,7 @@ newver
|
||||
Specify a version record file to store the new version info.
|
||||
|
||||
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 number of concurrent jobs. Default: 20.
|
||||
|
@ -38,6 +38,7 @@ def process_common_arguments(args):
|
||||
'''return True if should stop'''
|
||||
processors = [
|
||||
slogconf.exc_info,
|
||||
slogconf.filter_exc,
|
||||
]
|
||||
logger_factory = None
|
||||
|
||||
|
@ -6,9 +6,12 @@ import logging
|
||||
import os
|
||||
import io
|
||||
import traceback
|
||||
import sys
|
||||
|
||||
import structlog
|
||||
|
||||
from .source import HTTPError, NetworkErrors
|
||||
|
||||
def _console_msg(event):
|
||||
evt = event['event']
|
||||
if evt == 'up-to-date':
|
||||
@ -36,6 +39,24 @@ def exc_info(logger, level, event):
|
||||
event['exc_info'] = True
|
||||
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):
|
||||
# return event unchanged for further processing
|
||||
std_event = _console_msg(event.copy())
|
||||
@ -45,6 +66,8 @@ def stdlib_renderer(logger, level, event):
|
||||
logger = logging.getLogger()
|
||||
msg = std_event.pop('msg', std_event.pop('event'))
|
||||
exc_info = std_event.pop('exc_info', None)
|
||||
if 'error' in std_event:
|
||||
std_event['error'] = repr(std_event['error'])
|
||||
getattr(logger, level)(
|
||||
msg, exc_info = exc_info, extra=std_event,
|
||||
)
|
||||
|
@ -6,7 +6,7 @@ import asyncio
|
||||
import aiohttp
|
||||
connector = aiohttp.TCPConnector(limit=20)
|
||||
|
||||
__all__ = ['session', 'HTTPError']
|
||||
__all__ = ['session', 'HTTPError', 'NetworkErrors']
|
||||
|
||||
class HTTPError(Exception):
|
||||
def __init__(self, code, message, response):
|
||||
@ -25,9 +25,17 @@ class BetterClientSession(aiohttp.ClientSession):
|
||||
raise HTTPError(res.status, res.reason, res)
|
||||
return res
|
||||
|
||||
session = BetterClientSession(connector=connector)
|
||||
session = BetterClientSession(
|
||||
connector = connector,
|
||||
timeout = aiohttp.ClientTimeout(total=20),
|
||||
)
|
||||
|
||||
@atexit.register
|
||||
def cleanup():
|
||||
loop = asyncio.get_event_loop()
|
||||
loop.run_until_complete(session.close())
|
||||
|
||||
NetworkErrors = (
|
||||
asyncio.TimeoutError,
|
||||
aiohttp.ClientConnectorError,
|
||||
)
|
||||
|
@ -15,7 +15,7 @@ try:
|
||||
except ImportError:
|
||||
pycurl = None
|
||||
|
||||
__all__ = ['session', 'HTTPError']
|
||||
__all__ = ['session', 'HTTPError', 'NetworkErrors']
|
||||
|
||||
client = AsyncHTTPClient()
|
||||
HTTP2_AVAILABLE = None if pycurl else False
|
||||
@ -73,3 +73,5 @@ async def read(self):
|
||||
HTTPResponse.json = json_response
|
||||
HTTPResponse.read = read
|
||||
session = Session()
|
||||
|
||||
NetworkErrors = ()
|
||||
|
@ -25,7 +25,7 @@ github = lilydjwg/nvchecker
|
||||
[ssed]
|
||||
url = http://sed.sourceforge.net/grabbag/ssed/
|
||||
regex = The current version is ([\d.]+)\.
|
||||
proxy = localhost:8087
|
||||
proxy = http://localhost:8087
|
||||
|
||||
[PySide]
|
||||
pypi = PySide
|
||||
|
Loading…
Reference in New Issue
Block a user