diff --git a/client/djrandom_client/client.py b/client/djrandom_client/client.py index 0baee71c3ee486df81479e705b0cdbf2eb6a137c..4686e52a03c1439f24e588b9f41d146b0110dc71 100644 --- a/client/djrandom_client/client.py +++ b/client/djrandom_client/client.py @@ -60,6 +60,8 @@ def run_client(server_url, music_dir, api_key, run_once, bwlimit, enable_watcher enable_watcher = False upl = upload.Uploader(server_url.rstrip('/'), api_key) + upl.setDaemon(True) + upl.start() # Start the full filesystem scan in the background. if enable_watcher: @@ -92,7 +94,7 @@ def run_client(server_url, music_dir, api_key, run_once, bwlimit, enable_watcher signal.signal(signal.SIGINT, _cleanup) signal.signal(signal.SIGTERM, _cleanup) - upl.run() + upl.join() def main(): diff --git a/client/djrandom_client/upload.py b/client/djrandom_client/upload.py index 38c6628a4bd20b4ed02fcb5cbf9b3df1dcc0f751..f52bedd460c6073b7dba38fa510c229164ea8eb6 100644 --- a/client/djrandom_client/upload.py +++ b/client/djrandom_client/upload.py @@ -58,9 +58,10 @@ class FileDatabase(object): self.conn.commit() -class Uploader(object): +class Uploader(threading.Thread): def __init__(self, server_url, api_key, db=None): + threading.Thread.__init__(self) self.api_key = api_key self.server_url = server_url self.queue = Queue.Queue(100) @@ -133,8 +134,6 @@ class Uploader(object): self.db.close() def stop(self): - # We can't put 'None' in the queue and exit cleanly because the - # signal handler might run in the same thread as the 'run()' method, - # causing a deadlock. + # This runs in a different thread. self.db.close()