Use asyncio.run
This commit is contained in:
1 parent
cb9a0789fe
commit
c2a5db8a6a
1 file changed
+37
-35
@@ -164,38 +164,40 @@ if __name__ == "__main__":
|
|||||||
logging.getLogger("TwitchDrops.websocket").setLevel(settings.debug_ws)
|
logging.getLogger("TwitchDrops.websocket").setLevel(settings.debug_ws)
|
||||||
|
|
||||||
# client run
|
# client run
|
||||||
exit_status = 0
|
async def main():
|
||||||
loop = asyncio.new_event_loop()
|
exit_status = 0
|
||||||
asyncio.set_event_loop(loop)
|
client = Twitch(settings)
|
||||||
client = Twitch(settings)
|
loop = asyncio.get_running_loop()
|
||||||
signal.signal(signal.SIGINT, lambda *_: client.gui.close())
|
if sys.platform == "linux":
|
||||||
signal.signal(signal.SIGTERM, lambda *_: client.gui.close())
|
loop.add_signal_handler(signal.SIGINT, lambda *_: client.gui.close())
|
||||||
try:
|
loop.add_signal_handler(signal.SIGTERM, lambda *_: client.gui.close())
|
||||||
loop.run_until_complete(client.run())
|
try:
|
||||||
except CaptchaRequired:
|
await client.run()
|
||||||
exit_status = 1
|
except CaptchaRequired:
|
||||||
client.prevent_close()
|
exit_status = 1
|
||||||
client.print(_("error", "captcha"))
|
client.prevent_close()
|
||||||
except Exception:
|
client.print(_("error", "captcha"))
|
||||||
exit_status = 1
|
except Exception:
|
||||||
client.prevent_close()
|
exit_status = 1
|
||||||
client.print("Fatal error encountered:\n")
|
client.prevent_close()
|
||||||
client.print(traceback.format_exc())
|
client.print("Fatal error encountered:\n")
|
||||||
finally:
|
client.print(traceback.format_exc())
|
||||||
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
finally:
|
||||||
signal.signal(signal.SIGTERM, signal.SIG_DFL)
|
if sys.platform == "linux":
|
||||||
client.print(_("gui", "status", "exiting"))
|
loop.remove_signal_handler(signal.SIGINT)
|
||||||
loop.run_until_complete(client.shutdown())
|
loop.remove_signal_handler(signal.SIGTERM)
|
||||||
if not client.gui.close_requested:
|
client.print(_("gui", "status", "exiting"))
|
||||||
client.print(_("status", "terminated"))
|
await client.shutdown()
|
||||||
client.gui.status.update(_("gui", "status", "terminated"))
|
if not client.gui.close_requested:
|
||||||
loop.run_until_complete(client.gui.wait_until_closed())
|
client.print(_("status", "terminated"))
|
||||||
# save the application state
|
client.gui.status.update(_("gui", "status", "terminated"))
|
||||||
# NOTE: we have to do it after wait_until_closed,
|
await client.gui.wait_until_closed()
|
||||||
# because the user can alter some settings between app termination and closing the window
|
# save the application state
|
||||||
client.save(force=True)
|
# NOTE: we have to do it after wait_until_closed,
|
||||||
client.gui.stop()
|
# because the user can alter some settings between app termination and closing the window
|
||||||
client.gui.close_window()
|
client.save(force=True)
|
||||||
loop.run_until_complete(loop.shutdown_asyncgens())
|
client.gui.stop()
|
||||||
loop.close()
|
client.gui.close_window()
|
||||||
sys.exit(exit_status)
|
sys.exit(exit_status)
|
||||||
|
|
||||||
|
asyncio.run(main())
|
||||||
Reference in new issue
Block a user