我正在调用一个从kafka生产者发送一些数据的函数,但是在它发送之后我返回了一个不返回的响应。代码在返回时卡住了。任何人都知道发生了什么事吗?
我的代码如下,
def postEvent(eventData):
print("The eventData is...",eventData)
timestamp = datetime.now().__format__("%Y-%m-%d %H:%M:%S")
try:
producer = KafkaProducer(bootstrap_servers=["host:port"])
data = json.dumps(eventData).encode('utf-8')
try:
kafkaResponse = producer.send('streamTest', data)
response ={'time': str(timestamp), 'kafkaResponse':kafkaResponse.get(),
'postResult': 'true'}
print('kafaka response is...', response)
except ConnectionAbortedError:
response ={'time': str(timestamp), 'postResult': 'false'}
except kafka.errors.KafkaTimeoutError:
response ={'time': str(timestamp), 'postResult': 'false'}
print('kafaka response is...', response)
return response
except kafka.errors.NoBrokersAvailable:
response = {'Response':'Kafka Errors... NoBrokersAvailable'}
print('kafaka response ', response)
return response
答案 0 :(得分:0)
从您的问题中不清楚它所悬挂的return
声明。
我测试了你的代码,它对我来说非常适合使用Kafka 0.10.0.1经纪人和kafka-python
1.3.5。
这可能是Kafka群集网络问题,因此您可能会挂起的两个地方是:
1. kafkaResponse.get()
等待Future
解决
2.没有经纪人可用,而经纪人超时。如果您传入多个代理,请记住,在抛出NoBrokersAvailable
错误之前,它们需要每次超时。