def main(): tornado.log.enable_pretty_logging() ioloop = tornado.ioloop.IOLoop.instance() talkback = Talkback(ioloop=ioloop, config=CONFIG) client = SlackClient(URI, ioloop) talkback.register(client) future = client.listen() def callback(f): ioloop.stop() try: f.result() except Exception: logging.error( "Error in stream: {0}".format(traceback.format_exc())) future.add_done_callback(callback) def timeout(): logging.info("Shutdown timed out -- killing.") ioloop.stop() def shutdown(_, __): logging.info("Stopping the Slack client...") client.stop() ioloop.add_timeout(time.time() + 2, timeout) signal.signal(signal.SIGINT, shutdown) ioloop.start() logging.info("Slack service is stopped.")