diff options
author | Lars-Dominik Braun <lars@6xq.net> | 2018-10-14 12:35:07 +0200 |
---|---|---|
committer | Lars-Dominik Braun <lars@6xq.net> | 2018-10-14 12:35:07 +0200 |
commit | 07994fb6b72b0c84d2ee2c69e5afdb204d33d5e6 (patch) | |
tree | b3c052e605dc1266118a4f660afcfcafad5ebc26 /crocoite/cli.py | |
parent | 3e69f8b34a48ffa4df4805c53aeaba144d91c6bc (diff) | |
download | crocoite-07994fb6b72b0c84d2ee2c69e5afdb204d33d5e6.tar.gz crocoite-07994fb6b72b0c84d2ee2c69e5afdb204d33d5e6.tar.bz2 crocoite-07994fb6b72b0c84d2ee2c69e5afdb204d33d5e6.zip |
irc: Graceful bot shutdown
Wait for remaining jobs to finish without accepting new ones, but still
allow some interaction with the bot (status/revoke).
Diffstat (limited to 'crocoite/cli.py')
-rw-r--r-- | crocoite/cli.py | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/crocoite/cli.py b/crocoite/cli.py index 55ff4a1..913db7c 100644 --- a/crocoite/cli.py +++ b/crocoite/cli.py @@ -125,6 +125,7 @@ def irc (): config.read (args.config) s = config['irc'] + loop = asyncio.get_event_loop() bot = Chromebot ( host=s.get ('host'), port=s.getint ('port'), @@ -134,7 +135,10 @@ def irc (): tempdir=s.get ('tempdir'), destdir=s.get ('destdir'), processLimit=s.getint ('process_limit'), - logger=logger) - bot.loop.create_task(bot.connect()) - bot.loop.run_forever() + logger=logger, + loop=loop) + stop = lambda signum: bot.cancel () + loop.add_signal_handler (signal.SIGINT, stop, signal.SIGINT) + loop.add_signal_handler (signal.SIGTERM, stop, signal.SIGTERM) + loop.run_until_complete(bot.run ()) |