diff --git a/electrumx_rpc b/electrumx_rpc index 5763686..a520f94 100755 --- a/electrumx_rpc +++ b/electrumx_rpc @@ -10,7 +10,7 @@ '''Script to send RPC commands to a running ElectrumX server.''' -from aiorpcx import timeout_after +from aiorpcx import timeout_after, ClientSession, TaskTimeout import argparse import asyncio import json @@ -18,7 +18,6 @@ from os import environ import electrumx.lib.text as text -from aiorpcx import ClientSession simple_commands = { 'getinfo': 'Print a summary of server state', @@ -113,27 +112,29 @@ def main(): # aiorpcX makes this so easy... async def send_request(): - async with timeout_after(15): - async with ClientSession('localhost', port) as session: - result = await session.send_request(method, args) - if method in ('query', ): - for line in result: - print(line) - elif method in ('groups', 'peers', 'sessions'): - lines_func = getattr(text, f'{method}_lines') - for line in lines_func(result): - print(line) - else: - print(json.dumps(result, indent=4, sort_keys=True)) + try: + async with timeout_after(1): + async with ClientSession('localhost', port) as session: + result = await session.send_request(method, args) + if method in ('query', ): + for line in result: + print(line) + elif method in ('groups', 'peers', 'sessions'): + lines_func = getattr(text, f'{method}_lines') + for line in lines_func(result): + print(line) + else: + print(json.dumps(result, indent=4, sort_keys=True)) + except OSError: + print('cannot connect - is ElectrumX catching up, not running, or ' + f'is {port} the wrong RPC port?') + except TaskTimeout as e: + print(f'request timed out after {e.args[0]}s') + except Exception as e: + print(f'error making request: {e!r}') loop = asyncio.get_event_loop() - try: - loop.run_until_complete(send_request()) - except OSError: - print('cannot connect - is ElectrumX catching up, not running, or ' - f'is {port} the wrong RPC port?') - except Exception as e: - print(f'error making request: {e}') + loop.run_until_complete(send_request()) if __name__ == '__main__':