fix status
breaking (and loggly) when the internet connection is lost
This commit is contained in:
parent
d246c46227
commit
6b1f88df66
3 changed files with 16 additions and 14 deletions
|
@ -392,6 +392,10 @@ class Daemon(metaclass=JSONRPCServerType):
|
||||||
|
|
||||||
async def update_connection_status(self):
|
async def update_connection_status(self):
|
||||||
connected = await utils.async_check_connection()
|
connected = await utils.async_check_connection()
|
||||||
|
if connected and not self._connection_status[1]:
|
||||||
|
log.info("detected internet connection is working")
|
||||||
|
elif not connected and self._connection_status[1]:
|
||||||
|
log.warning("detected internet connection was lost")
|
||||||
self._connection_status = (self.component_manager.loop.time(), connected)
|
self._connection_status = (self.component_manager.loop.time(), connected)
|
||||||
|
|
||||||
async def get_connection_status(self) -> str:
|
async def get_connection_status(self) -> str:
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
from aiohttp.client_exceptions import ClientError
|
||||||
import json
|
import json
|
||||||
import logging.handlers
|
import logging.handlers
|
||||||
import traceback
|
import traceback
|
||||||
|
@ -49,9 +50,12 @@ class HTTPSLogglyHandler(logging.Handler):
|
||||||
return record.getMessage()
|
return record.getMessage()
|
||||||
|
|
||||||
async def _emit(self, record):
|
async def _emit(self, record):
|
||||||
payload = self.format(record)
|
try:
|
||||||
async with utils.aiohttp_request('post', self.url, data=payload.encode(), cookies=self.cookies) as response:
|
async with utils.aiohttp_request('post', self.url, data=self.format(record).encode(),
|
||||||
self.cookies.update(response.cookies)
|
cookies=self.cookies) as response:
|
||||||
|
self.cookies.update(response.cookies)
|
||||||
|
except ClientError:
|
||||||
|
pass
|
||||||
|
|
||||||
def emit(self, record):
|
def emit(self, record):
|
||||||
asyncio.ensure_future(self._emit(record))
|
asyncio.ensure_future(self._emit(record))
|
||||||
|
|
|
@ -81,28 +81,22 @@ def check_connection(server="lbry.com", port=80, timeout=5) -> bool:
|
||||||
try:
|
try:
|
||||||
server = socket.gethostbyname(server)
|
server = socket.gethostbyname(server)
|
||||||
socket.create_connection((server, port), timeout).close()
|
socket.create_connection((server, port), timeout).close()
|
||||||
log.debug('Connection successful')
|
|
||||||
return True
|
return True
|
||||||
except (socket.gaierror, socket.herror) as ex:
|
except (socket.gaierror, socket.herror) as ex:
|
||||||
log.warning("Failed to connect to %s:%s. Unable to resolve domain. Trying to bypass DNS",
|
log.debug("Failed to connect to %s:%s. Unable to resolve domain. Trying to bypass DNS",
|
||||||
server, port)
|
server, port)
|
||||||
try:
|
try:
|
||||||
server = "8.8.8.8"
|
server = "8.8.8.8"
|
||||||
port = 53
|
port = 53
|
||||||
socket.create_connection((server, port), timeout).close()
|
socket.create_connection((server, port), timeout).close()
|
||||||
log.debug('Connection successful')
|
|
||||||
return True
|
return True
|
||||||
except Exception:
|
except OSError:
|
||||||
log.error("Failed to connect to %s:%s. Maybe the internet connection is not working",
|
|
||||||
server, port)
|
|
||||||
return False
|
return False
|
||||||
except Exception:
|
except OSError:
|
||||||
log.error("Failed to connect to %s:%s. Maybe the internet connection is not working",
|
|
||||||
server, port)
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
async def async_check_connection(server="lbry.com", port=80, timeout=5) -> bool:
|
async def async_check_connection(server="lbry.com", port=80, timeout=1) -> bool:
|
||||||
return await asyncio.get_event_loop().run_in_executor(None, check_connection, server, port, timeout)
|
return await asyncio.get_event_loop().run_in_executor(None, check_connection, server, port, timeout)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue