summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe-Marie Duquesne <chmd@chmd.fr>2015-02-17 00:50:51 +0100
committerChristophe-Marie Duquesne <chmd@chmd.fr>2015-03-02 23:49:08 +0100
commit04979248afa82af77d02f76fbf12456bb83ae334 (patch)
tree1c80ea593425b16cf83f327707698a35a9808a9c
parent9ad0be662d388b47aadf04d712f5744add6456e3 (diff)
downloadkafka-python-04979248afa82af77d02f76fbf12456bb83ae334.tar.gz
Stopping daemonized threads when references to these threads are lost
-rw-r--r--kafka/producer/base.py6
-rw-r--r--kafka/util.py3
2 files changed, 9 insertions, 0 deletions
diff --git a/kafka/producer/base.py b/kafka/producer/base.py
index 5b41bc9..695f195 100644
--- a/kafka/producer/base.py
+++ b/kafka/producer/base.py
@@ -127,6 +127,7 @@ class Producer(object):
self.async = async
self.req_acks = req_acks
self.ack_timeout = ack_timeout
+ self.stopped = False
if codec is None:
codec = CODEC_NONE
@@ -212,3 +213,8 @@ class Producer(object):
if self.proc.is_alive():
self.proc.terminate()
+ self.stopped = True
+
+ def __del__(self):
+ if not self.stopped:
+ self.stop()
diff --git a/kafka/util.py b/kafka/util.py
index 14d2b2c..78c3607 100644
--- a/kafka/util.py
+++ b/kafka/util.py
@@ -151,3 +151,6 @@ class ReentrantTimer(object):
# noinspection PyAttributeOutsideInit
self.timer = None
self.fn = None
+
+ def __del__(self):
+ self.stop()