forked from M-Labs/artiq
aqctl_corelog: enable keepalive, terminate on connection failure
This commit is contained in:
parent
b4f24dd326
commit
02b086c9e5
|
@ -10,9 +10,11 @@ from sipyco.pc_rpc import Server
|
||||||
from sipyco import common_args
|
from sipyco import common_args
|
||||||
from sipyco.logging_tools import log_with_name
|
from sipyco.logging_tools import log_with_name
|
||||||
from sipyco.asyncio_tools import SignalHandler
|
from sipyco.asyncio_tools import SignalHandler
|
||||||
|
from sipyco.keepalive import async_open_connection
|
||||||
|
|
||||||
from artiq.coredevice.comm_mgmt import Request, Reply
|
from artiq.coredevice.comm_mgmt import Request, Reply
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
def get_argparser():
|
def get_argparser():
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
|
@ -38,7 +40,13 @@ async def get_logs_sim(host):
|
||||||
|
|
||||||
|
|
||||||
async def get_logs(host):
|
async def get_logs(host):
|
||||||
reader, writer = await asyncio.open_connection(host, 1380)
|
reader, writer = await async_open_connection(
|
||||||
|
host,
|
||||||
|
1380,
|
||||||
|
after_idle=1,
|
||||||
|
interval=1,
|
||||||
|
max_fails=3,
|
||||||
|
)
|
||||||
writer.write(b"ARTIQ management\n")
|
writer.write(b"ARTIQ management\n")
|
||||||
endian = await reader.readexactly(1)
|
endian = await reader.readexactly(1)
|
||||||
if endian == b"e":
|
if endian == b"e":
|
||||||
|
@ -89,18 +97,19 @@ def main():
|
||||||
loop.run_until_complete(server.start(common_args.bind_address_from_args(args), args.port))
|
loop.run_until_complete(server.start(common_args.bind_address_from_args(args), args.port))
|
||||||
try:
|
try:
|
||||||
_, pending = loop.run_until_complete(asyncio.wait(
|
_, pending = loop.run_until_complete(asyncio.wait(
|
||||||
[signal_handler.wait_terminate(), server.wait_terminate()],
|
[signal_handler.wait_terminate(),
|
||||||
|
server.wait_terminate(),
|
||||||
|
get_logs_task
|
||||||
|
],
|
||||||
return_when=asyncio.FIRST_COMPLETED))
|
return_when=asyncio.FIRST_COMPLETED))
|
||||||
for task in pending:
|
for task in pending:
|
||||||
task.cancel()
|
task.cancel()
|
||||||
finally:
|
finally:
|
||||||
loop.run_until_complete(server.stop())
|
loop.run_until_complete(server.stop())
|
||||||
finally:
|
finally:
|
||||||
get_logs_task.cancel()
|
|
||||||
try:
|
|
||||||
loop.run_until_complete(get_logs_task)
|
|
||||||
except asyncio.CancelledError:
|
|
||||||
pass
|
pass
|
||||||
|
except Exception:
|
||||||
|
logger.error("Termination due to exception", exc_info=True)
|
||||||
finally:
|
finally:
|
||||||
signal_handler.teardown()
|
signal_handler.teardown()
|
||||||
finally:
|
finally:
|
||||||
|
|
Loading…
Reference in New Issue