使用python的Kafka生产者:TypeError:所有生成消息的有效负载必须为null或类型字节

时间:2016-10-20 01:29:43

标签: python apache-kafka kafka-producer-api kafka-python

我刚开始学习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()

1 个答案:

答案 0 :(得分:0)

哦,我刚刚看到您发布的示例是字符串必须是字节字符串,前面加上b字符,如here所述

此外,您错过了try-except子句捕获服务器未就绪时的异常...