Describe consumer thread-safety
This commit is contained in:
committed by
Dana Powers
parent
73d78bc76a
commit
97261f491d
@@ -110,6 +110,15 @@ for more details.
|
||||
>>> for i in range(1000):
|
||||
... producer.send('foobar', b'msg %d' % i)
|
||||
|
||||
Thread safety
|
||||
*************
|
||||
|
||||
The KafkaProducer can be used across threads without issue, unlike the
|
||||
KafkaConsumer which cannot.
|
||||
|
||||
While it is possible to use the KafkaConsumer in a thread-local manner,
|
||||
multiprocessing is recommended.
|
||||
|
||||
Compression
|
||||
***********
|
||||
|
||||
|
||||
@@ -109,6 +109,16 @@ client. See `KafkaProducer <apidoc/KafkaProducer.html>`_ for more details.
|
||||
... producer.send('foobar', b'msg %d' % i)
|
||||
|
||||
|
||||
Thread safety
|
||||
*************
|
||||
|
||||
The KafkaProducer can be used across threads without issue, unlike the
|
||||
KafkaConsumer which cannot.
|
||||
|
||||
While it is possible to use the KafkaConsumer in a thread-local manner,
|
||||
multiprocessing is recommended.
|
||||
|
||||
|
||||
Compression
|
||||
***********
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env python
|
||||
import threading, logging, time
|
||||
import multiprocessing
|
||||
|
||||
from kafka import KafkaConsumer, KafkaProducer
|
||||
|
||||
@@ -16,7 +17,7 @@ class Producer(threading.Thread):
|
||||
time.sleep(1)
|
||||
|
||||
|
||||
class Consumer(threading.Thread):
|
||||
class Consumer(multiprocessing.Process):
|
||||
daemon = True
|
||||
|
||||
def run(self):
|
||||
@@ -29,12 +30,12 @@ class Consumer(threading.Thread):
|
||||
|
||||
|
||||
def main():
|
||||
threads = [
|
||||
tasks = [
|
||||
Producer(),
|
||||
Consumer()
|
||||
]
|
||||
|
||||
for t in threads:
|
||||
for t in tasks:
|
||||
t.start()
|
||||
|
||||
time.sleep(10)
|
||||
|
||||
@@ -33,6 +33,8 @@ class KafkaConsumer(six.Iterator):
|
||||
to allow multiple consumers to load balance consumption of topics (requires
|
||||
kafka >= 0.9.0.0).
|
||||
|
||||
The consumer is not thread safe and should not be shared across threads.
|
||||
|
||||
Arguments:
|
||||
*topics (str): optional list of topics to subscribe to. If not set,
|
||||
call :meth:`~kafka.KafkaConsumer.subscribe` or
|
||||
|
||||
Reference in New Issue
Block a user