Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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 同步卡夫卡制作人发送仍有0秒超时?_Python_Apache Kafka - Fatal编程技术网

Python 同步卡夫卡制作人发送仍有0秒超时?

Python 同步卡夫卡制作人发送仍有0秒超时?,python,apache-kafka,Python,Apache Kafka,我在Python脚本中有以下代码 from kafka import KafkaProducer kafka_producer = KafkaProducer(....) kafka_producer.send(topic, value=message) kafka_producer.flush() logger.info('Done!') # this message is displayed 然而,我仍然看到了下面的消息。消息似乎已成功发送。为什么即使调用了flush(),也会显示“

我在Python脚本中有以下代码

from kafka import KafkaProducer

kafka_producer = KafkaProducer(....)

kafka_producer.send(topic, value=message)
kafka_producer.flush()

logger.info('Done!') # this message is displayed
然而,我仍然看到了下面的消息。消息似乎已成功发送。为什么即使调用了
flush()
,也会显示“0秒超时”消息

信息:根:完成

信息:kafka.producer.kafka:以0秒超时关闭kafka制作者

信息:kafka.producer.kafka:继续强制关闭生产者,因为挂起的请求无法在超时0内完成

信息:kafka.conn::正在关闭连接


我认为在这种情况下,错误消息是不正确的。有关守则—

我对守则的解释: 如果
timeout
0
我们跳过优雅关闭代码,直接进入强制关闭。在登录之前,在
\u发送方
上检查的唯一条件是它是否存在,以及它是否存在。当然,它是存在的,它是活的,因为它从来没有被告知要关闭

如果
超时
0
,则它从不检查是否可以完成或无法完成任何操作。因此,在这种情况下,日志记录是不正确的


timeout>0
的情况下,日志记录是有意义的
initiate\u close()
会被调用,这意味着您只能通过稍后检查
is\u alive()
来知道join是否成功。如果在尝试了
join()
之后它仍然处于活动状态,那么它将强制关闭它,并且请求无法在超时时间内完成。

我认为在这种情况下,错误消息是不正确的。有关守则—

我对守则的解释: 如果
timeout
0
我们跳过优雅关闭代码,直接进入强制关闭。在登录之前,在
\u发送方
上检查的唯一条件是它是否存在,以及它是否存在。当然,它是存在的,它是活的,因为它从来没有被告知要关闭

如果
超时
0
,则它从不检查是否可以完成或无法完成任何操作。因此,在这种情况下,日志记录是不正确的

timeout>0
的情况下,日志记录是有意义的
initiate\u close()
会被调用,这意味着您只能通过稍后检查
is\u alive()
来知道join是否成功。如果在尝试
join()
之后它仍然处于活动状态,则它将强制关闭它,并且请求无法在超时内完成

        if timeout > 0:
            if invoked_from_callback:
                log.warning("Overriding close timeout %s secs to 0 in order to"
                            " prevent useless blocking due to self-join. This"
                            " means you have incorrectly invoked close with a"
                            " non-zero timeout from the producer call-back.",
                            timeout)
            else:
                # Try to close gracefully.
                if self._sender is not None:
                    self._sender.initiate_close()
                    self._sender.join(timeout)

        if self._sender is not None and self._sender.is_alive():
            log.info("Proceeding to force close the producer since pending"
                     " requests could not be completed within timeout %s.",
                     timeout)
            self._sender.force_close()