Producer.stop() now blocks until async thread completes (drop confusing timeout arg)

This commit is contained in:
Dana Powers
2015-12-05 04:05:48 -08:00
parent 2916bb8650
commit 5682ff6353

View File

@@ -415,17 +415,22 @@ class Producer(object):
raise raise
return resp return resp
def stop(self, timeout=1): def stop(self):
""" """
Stop the producer. Optionally wait for the specified timeout before Stop the producer (async mode). Blocks until async thread completes.
forcefully cleaning up.
""" """
if not self.async:
log.warning("producer.stop() called, but producer is not async")
return
if self.stopped:
log.warning("producer.stop() called, but producer is already stopped")
return
if self.async: if self.async:
self.queue.put((STOP_ASYNC_PRODUCER, None, None)) self.queue.put((STOP_ASYNC_PRODUCER, None, None))
self.thread.join(timeout) self.thread_stop_event.set()
self.thread.join()
if self.thread.is_alive():
self.thread_stop_event.set()
if hasattr(self, '_cleanup_func'): if hasattr(self, '_cleanup_func'):
# Remove cleanup handler now that we've stopped # Remove cleanup handler now that we've stopped