New submission from Tarek Ziadé <ziade.ta...@gmail.com>: If you try to run the code below and stop it with ctrl+C, it will lock because atexit is never reached.
Antoine proposed to add a way to have one atexit() per thread, so we can call some cleanup code when the app shuts down and there are running threads. {{{ from wsgiref.simple_server import make_server import threading import time import atexit class Work(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.running = False def run(self): self.running = True while self.running: time.sleep(.2) def stop(self): self.running = False self.join() worker = Work() def shutdown(): # bye-bye print 'bye bye' worker.stop() atexit.register(shutdown) def hello_world_app(environ, start_response): status = '200 OK' # HTTP Status headers = [('Content-type', 'text/plain')] start_response(status, headers) return ["Hello World"] def main(): worker.start() return make_server('', 8000, hello_world_app) if __name__ == '__main__': server = main() server.serve_forever() }}} ---------- messages: 153871 nosy: tarek priority: normal severity: normal status: open title: allow per-thread atexit() type: behavior versions: Python 3.2, Python 3.3, Python 3.4 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue14073> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com