Gracefully stop consumer and refresher

This commit is contained in:
Jan Losinski 2019-01-26 22:11:58 +01:00
parent 150c475696
commit b0e05c7da5
1 changed files with 14 additions and 0 deletions

View File

@ -2,6 +2,7 @@
import argparse import argparse
import asyncio import asyncio
import signal
import logbook import logbook
import uvloop import uvloop
@ -62,6 +63,17 @@ if __name__ == "__main__":
models.create_db(config) models.create_db(config)
logger.info("Database created.") logger.info("Database created.")
on_stop = []
def _stop():
for cb in on_stop:
cb()
loop.add_signal_handler(signal.SIGTERM, _stop)
loop.add_signal_handler(signal.SIGINT, _stop)
wallabag = Wallabag(config) wallabag = Wallabag(config)
sender = Sender(loop, config.smtp_from, config.smtp_host, config.smtp_port, config.smtp_user, config.smtp_passwd) sender = Sender(loop, config.smtp_from, config.smtp_host, config.smtp_port, config.smtp_user, config.smtp_passwd)
@ -69,11 +81,13 @@ if __name__ == "__main__":
logger.info("Create Refresher") logger.info("Create Refresher")
refresher = Refresher(config, wallabag, sender) refresher = Refresher(config, wallabag, sender)
loop.create_task(refresher.refresh()) loop.create_task(refresher.refresh())
on_stop.append(lambda: refresher.stop())
if args.consumer: if args.consumer:
logger.info("Create Consumer") logger.info("Create Consumer")
consumer = Consumer(wallabag, config, sender) consumer = Consumer(wallabag, config, sender)
loop.create_task(consumer.consume()) loop.create_task(consumer.consume())
on_stop.append(lambda: consumer.stop())
if args.interface: if args.interface:
logger.info("Create Interface") logger.info("Create Interface")