0
방금 Python과 Kafka를 배우기 시작했습니다. 이것은 처음 시도한 첫 번째 예입니다. http://www.giantflyingsaucer.com/blog/?p=5541Kafka 제작자가 Python을 사용하는 경우 : TypeError : 모두 메시지 페이로드가 null이거나 형식 바이트 여야합니다.
그리고 예외 가지고 :
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
내가 구글에서 검색 한하지만 문제가 무엇인지 확실히 모르겠어요입니다. 누구든지 조언을 해 줄 수 있습니까? 대단히 감사합니다! 여기
내 코드입니다 :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()
내 생각에 당신이 얻는 오류는 생산자가 실제로 응답하기 전에 kafka 클라이언트를 닫는 것과 관련이 있습니다. 그것은 비동기 프로세스. – jimijazz
단순 제작자 및 소비자 APIS는 [여기] (https://github.com/dpkp/kafka-python)에 명시된대로 사용되지 않습니다 (간단한 구현이지만 사용하기가 더 복잡합니다!). 대신 같은 페이지에서 언급 된 높은 수준의 제작물을 사용해야합니다. – jimijazz