def handle_close(self, type_): if self.shutdown: return logging.info("downloader: quitting") self.shutdown = True eventloop.shutdown() logging.info("Cleaning up libcurl") httpclient.stop_thread() httpclient.cleanup_libcurl() from miro.dl_daemon import download download.shutdown() import threading for thread in threading.enumerate(): if thread != threading.currentThread() and not thread.isDaemon(): logging.info("joining with %s", thread) thread.join() logging.info("handle_close() done")
def handle_close(self, type_): if self.shutdown: return logging.info("downloader: quitting") self.shutdown = True eventloop.shutdown() from miro.dl_daemon import download download.shutdown() logging.info("Cleaning up libcurl") httpclient.stop_thread() httpclient.cleanup_libcurl() import threading for thread in threading.enumerate(): if thread != threading.currentThread() and not thread.isDaemon(): logging.info("joining with %s", thread) thread.join() logging.info("handle_close() done")
def action(self): starttime = time.time() from miro import httpclient from miro.dl_daemon import download download.shutdown() httpclient.stop_thread() eventloop.thread_pool_quit() for thread in threading.enumerate(): if (thread != threading.currentThread() and thread.getName() != "MainThread" and not thread.isDaemon()): thread.join() endtime = starttime + DAEMONIC_THREAD_TIMEOUT for thread in threading.enumerate(): if (thread != threading.currentThread() and thread.getName() != "MainThread"): timeout = endtime - time.time() if timeout <= 0: break thread.join(timeout) c = ShutDownResponseCommand(self.daemon) c.send(callback=self.response_sent) self.daemon.shutdown = True