forked from LBRYCommunity/lbry-sdk
actually exit on disconnect
This commit is contained in:
parent
888bd85470
commit
8bd7008fdc
1 changed files with 20 additions and 2 deletions
|
@ -3,6 +3,7 @@ import asyncio
|
||||||
import json
|
import json
|
||||||
import socket
|
import socket
|
||||||
import random
|
import random
|
||||||
|
import sys
|
||||||
from time import perf_counter
|
from time import perf_counter
|
||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
from typing import Dict, Optional, Tuple
|
from typing import Dict, Optional, Tuple
|
||||||
|
@ -197,6 +198,10 @@ class Network:
|
||||||
def jurisdiction(self):
|
def jurisdiction(self):
|
||||||
return self.config.get("jurisdiction")
|
return self.config.get("jurisdiction")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def exit_on_disconnect(self):
|
||||||
|
return self.config["exit_on_disconnect"]
|
||||||
|
|
||||||
def disconnect(self):
|
def disconnect(self):
|
||||||
if self._keepalive_task and not self._keepalive_task.done():
|
if self._keepalive_task and not self._keepalive_task.done():
|
||||||
self._keepalive_task.cancel()
|
self._keepalive_task.cancel()
|
||||||
|
@ -373,7 +378,13 @@ class Network:
|
||||||
def rpc(self, list_or_method, args, restricted=True, session: Optional[ClientSession] = None):
|
def rpc(self, list_or_method, args, restricted=True, session: Optional[ClientSession] = None):
|
||||||
if session or self.is_connected:
|
if session or self.is_connected:
|
||||||
session = session or self.client
|
session = session or self.client
|
||||||
return session.send_request(list_or_method, args)
|
try:
|
||||||
|
return session.send_request(list_or_method, args)
|
||||||
|
except asyncio.TimeoutError:
|
||||||
|
if self.exit_on_disconnect:
|
||||||
|
log.error("exiting on server disconnect")
|
||||||
|
sys.exit(1)
|
||||||
|
raise
|
||||||
else:
|
else:
|
||||||
self._urgent_need_reconnect.set()
|
self._urgent_need_reconnect.set()
|
||||||
raise ConnectionError("Attempting to send rpc request when connection is not available.")
|
raise ConnectionError("Attempting to send rpc request when connection is not available.")
|
||||||
|
@ -387,9 +398,16 @@ class Network:
|
||||||
try:
|
try:
|
||||||
return await function(*args, **kwargs)
|
return await function(*args, **kwargs)
|
||||||
except asyncio.TimeoutError:
|
except asyncio.TimeoutError:
|
||||||
log.warning("Wallet server call timed out, retrying.")
|
if self.exit_on_disconnect:
|
||||||
|
log.error("Wallet server call timed out, exiting on server disconnect.")
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
log.warning("Wallet server call timed out, retrying.")
|
||||||
except ConnectionError:
|
except ConnectionError:
|
||||||
log.warning("connection error")
|
log.warning("connection error")
|
||||||
|
if self.exit_on_disconnect:
|
||||||
|
log.error("exiting on server disconnect")
|
||||||
|
sys.exit(1)
|
||||||
raise asyncio.CancelledError() # if we got here, we are shutting down
|
raise asyncio.CancelledError() # if we got here, we are shutting down
|
||||||
|
|
||||||
def _update_remote_height(self, header_args):
|
def _update_remote_height(self, header_args):
|
||||||
|
|
Loading…
Reference in a new issue