2017-05-30 8 views
0

私はカフカプロデューサーからデータを送信する関数を呼び出していますが、送信した後は返さないレスポンスを返しています。コードは返ってきてしまいます。誰でも何が起きているのでしょうか?次のようにカフカプロデューサーが私のコードを停止

私のコードは

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

それはでぶら下がっていますreturn文のご質問からははっきりしない、です。

コードをテストしたところ、Kafka 0.10.0.1ブローカーとkafka-python 1.3.5で完全に機能しました。

あなたがハングアップする可能性がある2ヶ所のいずれかであるので、それは、おそらく問題ネットワーキングカフカクラスタです: 1. kafkaResponse.get()ブローカーがタイムアウトしながらFutureは、利用可能 2.ませブローカーを解決しないようにするためにあなたが待っている間。複数のブローカーを渡す場合は、それぞれのタイムアウトが発生してからNoBrokersAvailableエラーが発生することに注意してください。

関連する問題