项目当中用到了pykafka,所以需要对代码进行查看。在异步producer的时候肯定会需要在client端缓存队列的,就来看看它都干了些啥。
producer.py中的start函数就是准备工作、连接工作做完之后的发起者咯:
def start(self):
def queue_reader():
while self.running:
try:
batch = self.flush(self.producer._linger_ms, self.producer._max_request_size)
if batch:
self.producer._send_request(batch, self)
except Exception:
# surface all exceptions to the main thread
self.producer._worker_exception = sys.exc_info()
break
log.info("Worker exited for broker %s:%s", self.broker.host,
self.broker.port)
log.info("Starting new produce worker for broker %s", self.broker.id)
name = "pykafka.OwnedBroker.queue_reader for broker {}".format(self.broker.i