python kafka在Windows上返回';nodenoteradeyerror';
我能够使用优秀的软件包从卡夫卡主题(运行OSX)流式传输消息,例如:python kafka在Windows上返回';nodenoteradeyerror';,python,windows,apache-kafka,Python,Windows,Apache Kafka,我能够使用优秀的软件包从卡夫卡主题(运行OSX)流式传输消息,例如: from kafka import KafkaConsumer consumer = KafkaConsumer('MyTopic', group_id='alex', bootstrap_servers=['kafka:9092'], auto_offset_reset='l
from kafka import KafkaConsumer
consumer = KafkaConsumer('MyTopic',
group_id='alex',
bootstrap_servers=['kafka:9092'],
auto_offset_reset='largest')
for message in consumer:
print message.value
一位运行Windows7的同事问我,他是否可以使用相同的方法进行流式处理/过滤/警报。“没问题,”我说。我们安装了和,并尝试流式传输一些消息
不幸的是,在运行consumer几分钟后,将显示以下消息:
File "C:\Users\[my_colleague]\AppData\Local\Continuum\Anaconda2\lib\site-packages\kafka\client_async.py", line 598, in connect
raise Errors.NodeNotReadyError(node_id)
kafka.common.NodeNotReadyError: None
我怀疑Windows防火墙正在阻止消费者和代理之间的通信,因此我们简单地将Pycharm和python.exe添加到可以穿越防火墙的程序列表中。那没用
在这一点上,我对这个问题有一种归属感,我应该避免在排除故障时垄断他的笔记本电脑。鉴于Python、Kafka和Windows的流行,我想我们不是第一个面对这个问题的人。你能看到我们做错了什么吗?这实际上是试图自动探测你的代理版本时的一个错误。这是一个非标准特性,我们添加到python客户机中,使使用同一客户机的代理版本之间的互操作更加容易。我强烈建议,一旦通过了开发阶段,就应该使用
api\u version
参数显式地传递代理版本。探测版本由kafka python记录,以防您想要验证,但从注释来看,这里的版本似乎是0.9。所以在这里
consumer = KafkaConsumer('MyTopic',
api_version=(0, 9),
group_id='alex',
bootstrap_servers=['kafka:9092'],
auto_offset_reset='largest')
你用的是什么版本的卡夫卡?好问题,鹦鹉螺。我们用的是卡夫卡2.0.0。没有卡夫卡2.0.0版本,可能是0.9.0?你说得对。我们正在运行“ApacheKafka的Cloudera发行版”2.0.0,令人困惑的是,它基于ApacheKafka 0.9.0.0()。好的,(我不确定Cloudera的发行版)我认为您可以通过使用/bin/windows文件夹中的脚本轻松测试机器是否存在问题,您可以从那里为消费者提供午餐。在本文中,有一部分专门介绍了如何在linux上运行它,但我认为在windows中类似于run。