summaryrefslogtreecommitdiff
path: root/crocoite/cli.py
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2018-10-14 12:35:07 +0200
committerLars-Dominik Braun <lars@6xq.net>2018-10-14 12:35:07 +0200
commit07994fb6b72b0c84d2ee2c69e5afdb204d33d5e6 (patch)
treeb3c052e605dc1266118a4f660afcfcafad5ebc26 /crocoite/cli.py
parent3e69f8b34a48ffa4df4805c53aeaba144d91c6bc (diff)
downloadcrocoite-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.py10
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 ())