0

Python と Kafka の学習を始めたばかりです。これは私が始めようとした最初の例です。 http://www.giantflyingsaucer.com/blog/?p=5541

そして、私は例外を得ました:

Traceback (most recent call last):
  File "producer.py", line 23, in <module>
    main()
  File "producer.py", line 18, in main
    print_response(producer.send_messages(topic, msg))
  File "D:\Setups\Python35-32\lib\site-packages\kafka\producer\simple.py", line 50, in send_messages
    topic, partition, *msg
  File "D:\Setups\Python35-32\lib\site-packages\kafka\producer\base.py", line 379, in send_messages
    return self._send_messages(topic, partition, *msg)
  File "D:\Setups\Python35-32\lib\site-packages\kafka\producer\base.py", line 396, in _send_messages
    raise TypeError("all produce message payloads must be null or type bytes")
TypeError: all produce message payloads must be null or type bytes

Googleで検索しましたが、何が問題なのかよくわかりません。誰かアドバイスをください。どうもありがとうございました!

これが私のコードです:

from kafka import SimpleProducer, KafkaClient 

def print_response(response=None):
    if response:
        print('Error: {0}'.format(response[0].error))
        print('Offset: {0}'.format(response[0].offset))


def main():
    kafka = KafkaClient("10.2.5.53:9092")
    producer = SimpleProducer(kafka)

    topic = 'test'
    msg = 'Hello World'

    print_response(producer.send_messages(topic, msg))

    kafka.close()

if __name__ == "__main__":
    main()
4

1 に答える 1

0

ああ、あなたが投稿した例を見て気づいたのは、ここでb説明されているように、文字列は文字を前に付けたバイト文字列でなければならないということです

また、サーバーの準備ができていない場合の例外をキャッチする try-except 句がありません...

于 2016-10-20T02:26:08.837 に答える