Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Producer可以通过shell发送,但不能通过.py发送_Python_Python 3.x_Apache Kafka_Kafka Python - Fatal编程技术网

Python Producer可以通过shell发送,但不能通过.py发送

Python Producer可以通过shell发送,但不能通过.py发送,python,python-3.x,apache-kafka,kafka-python,Python,Python 3.x,Apache Kafka,Kafka Python,我有一个正在运行并经过测试的Kafka集群,我正在尝试使用Python脚本向代理发送消息。当我使用Python3 shell并调用producer方法时,这是可行的,但是当我将这些相同的命令放入python文件并执行它时,脚本似乎挂起了 我正在为消费者和生产者使用kafka python库。当我使用Python3 shell时,我可以看到主题中使用Kafka GUI工具2.0.4显示的消息 我在python代码中尝试了各种循环和语句,但似乎没有什么能让它“运行”到完成 >>>f

我有一个正在运行并经过测试的Kafka集群,我正在尝试使用Python脚本向代理发送消息。当我使用Python3 shell并调用producer方法时,这是可行的,但是当我将这些相同的命令放入python文件并执行它时,脚本似乎挂起了

我正在为消费者和生产者使用kafka python库。当我使用Python3 shell时,我可以看到主题中使用Kafka GUI工具2.0.4显示的消息 我在python代码中尝试了各种循环和语句,但似乎没有什么能让它“运行”到完成

>>>from kafka import KafkaProducer
>>>producer = KafkaProducer(bootstrap_servers='BOOTSTRAP_SRV:9092')
>>>producer.send('MyTopic', b'Has this worked?')
>>>>>><kafka.producer.future.FutureRecordMetadata object at 0x7f7af9ece048>

正如你所看到的,它返回了一个未来

Kafka客户端将批处理记录,它们不会一次立即发送一条记录,要做到这一点,您需要等待或刷新生产者缓冲区,以便在应用程序退出之前发送。换句话说,交互终端将生产者数据保存在内存中,在后台运行,而另一种方式则丢弃该数据


如果你不关心元数据或者不想抓住未来,也可以放producer.flush

正如您所见,它返回了一个未来

Kafka客户端将批处理记录,它们不会一次立即发送一条记录,要做到这一点,您需要等待或刷新生产者缓冲区,以便在应用程序退出之前发送。换句话说,交互终端将生产者数据保存在内存中,在后台运行,而另一种方式则丢弃该数据

如果你不关心元数据或者不想抓住未来,也可以放producer.flush

from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers='BOOTSTRAP_SRV:9092')
producer.send('MyTopic', b'Some Data to Check')
future = producer.send(...)

try:
    record_metadata = future.get(timeout=10)
except KafkaError:
    # Decide what to do if produce request failed...
    log.exception()
    pass