diff options
author | Dana Powers <dana.powers@gmail.com> | 2016-06-26 12:29:02 -0700 |
---|---|---|
committer | Dana Powers <dana.powers@gmail.com> | 2016-06-26 12:42:55 -0700 |
commit | 13715b4e3f41e03a7fac398240801bf403402a94 (patch) | |
tree | 6db1d86207d2e43264a2d02a5dd29453f169e04f | |
parent | b2bc1f0ed7b339b111e02afec1d8b7aa1d8495da (diff) | |
download | kafka-python-no_sleep_til_brooklyn.tar.gz |
Wakeup socket optimizationsno_sleep_til_brooklyn
-rw-r--r-- | kafka/client_async.py | 2 | ||||
-rw-r--r-- | kafka/producer/sender.py | 7 |
2 files changed, 7 insertions, 2 deletions
diff --git a/kafka/client_async.py b/kafka/client_async.py index 25952be..63b63d1 100644 --- a/kafka/client_async.py +++ b/kafka/client_async.py @@ -726,7 +726,7 @@ class KafkaClient(object): def _clear_wake_fd(self): while True: try: - self._wake_r.recv(1) + self._wake_r.recv(1024) except: break diff --git a/kafka/producer/sender.py b/kafka/producer/sender.py index f0f77ee..958e165 100644 --- a/kafka/producer/sender.py +++ b/kafka/producer/sender.py @@ -163,7 +163,12 @@ class Sender(threading.Thread): self.initiate_close() def add_topic(self, topic): - if topic not in self._topics_to_add: + # This is generally called from a separate thread + # so this needs to be a thread-safe operation + # we assume that checking set membership across threads + # is ok where self._client._topics should never + # remove topics for a producer instance, only add them. + if topic not in self._client._topics: self._topics_to_add.add(topic) self.wakeup() |