[英]Python-Kafka : Program running in interactive mode and not in script mode
我正在尝试通过Machine_2
的python脚本向Machine_1
的Kafka主题发送一些消息。 Machine_2
和Machine_1
都在同一网络中,并且都是Azure中的VM。
代码:sampl.py
from kafka import KafkaProducer
Producer = KafkaProducer(bootstrap_servers=['Machine_2:9092'])
Producer.send('test', 'hello')
如果我运行上面的代码为
python sampl.py
没有消息到达Machine_2
。 但是,如果我这样做:
python -i sampl.py
然后消息到达Machine_2
。 我使用kafka-console-consumer.sh
进行了检查。 我在Machine_1
做了yum update
,认为这里可能缺少一些库。 但是还没有运气。
谢谢。
kafka-python维护者在这里。 Producer.send('test', b'hello')
是异步的,不提供立即交付。 您可能会看到,在生产者有机会完成网络发送之前,python解释器已关闭。
如果要等到消息发送完成后再执行脚本,则应使用.get(timeout = ...)。 因此,请尝试:
Producer.send('test', b'hello').get(timeout=1000)
或者,您可以调用flush()对所有未发送的消息执行相同的操作:
Producer.flush(timeout=1000)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.