X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=juju%2Floop.py;h=4abedfcc38f708185f6f20221b5cbe1e70dd868a;hb=fbd25b458d70f0ca0743be60ff3d6ab21335707f;hp=3720159df91c2fe0dc95bbab4ddc6dce92af6608;hpb=b27c2c18d73186c95cb2995b665cfdccb308162f;p=osm%2FN2VC.git diff --git a/juju/loop.py b/juju/loop.py index 3720159..4abedfc 100644 --- a/juju/loop.py +++ b/juju/loop.py @@ -20,7 +20,14 @@ def run(*steps): task.cancel() run._sigint = True - loop.add_signal_handler(signal.SIGINT, abort) + added = False + try: + loop.add_signal_handler(signal.SIGINT, abort) + added = True + except ValueError as e: + # add_signal_handler doesn't work in a thread + if 'main thread' not in str(e): + raise try: for step in steps: task = loop.create_task(step) @@ -31,4 +38,5 @@ def run(*steps): raise task.exception() return task.result() finally: - loop.remove_signal_handler(signal.SIGINT) + if added: + loop.remove_signal_handler(signal.SIGINT)