小编Art*_*nov的帖子

confluence-kafka-python:当 Broker 不可用时如何使初始连接超时?

我正在使用confluent-kafka-python,当我尝试连接到已关闭的代理时,发现它无限挂起。我似乎无法应用在文档中找到的任何超时设置:

from confluent_kafka import Consumer

conf = {'bootstrap.servers': f"{self.host}:{self.port}",
           'group.id': "foo",
           'auto.offset.reset': 'smallest',
           'socket.timeout.ms':'2000', 'socket.max.fails':2,
           'metadata.request.timeout.ms': 5000,
           'reconnect.backoff.max.ms':'5000',
           'api.version.request.timeout.ms':'5000',
           #api.version.fallback.ms
           'session.timeout.ms':'2000',
           #heartbeat.interval.ms
           'coordinator.query.interval.ms':'1000',
           #max.poll.interval.ms
           #auto.commit.interval.ms,
           "debug":"generic, broker, topic, metadata",

   }

try:
     self.consumer = Consumer(conf)
Run Code Online (Sandbox Code Playgroud)

我在日志中得到:

%7|1584702589.065|CONNECT|rdkafka#consumer-1| [thrd:x.x.x.x:6667/bootstrap]: x.x.x.x:6667/bootstrap: broker in state TRY_CONNECT connecting
%7|1584702589.065|STATE|rdkafka#consumer-1| [thrd:x.x.x.x:6667/bootstrap]: x.x.x.x:6667/bootstrap: Broker changed state TRY_CONNECT -> CONNECT
%7|1584702589.065|BROADCAST|rdkafka#consumer-1| [thrd:x.x.x.x:6667/bootstrap]: Broadcasting state change
%7|1584702589.065|CONNECT|rdkafka#consumer-1| [thrd:x.x.x.x:6667/bootstrap]: x.x.x.x:6667/bootstrap: Connecting to ipv4#x.x.x.x:6667 (plaintext) with socket 11
%7|1584702589.065|CONNECT|rdkafka#consumer-1| [thrd:app]: Cluster connection already in progress: application metadata request
%7|1584702589.066|CONNECT|rdkafka#consumer-1| …
Run Code Online (Sandbox Code Playgroud)

apache-kafka kafka-consumer-api kafka-python confluent-platform

6
推荐指数
0
解决办法
3770
查看次数

jq 从数组中选择具有字段最小值或最大值的记录

我有一个 json 记录如下:

[
 {"number":1},
 {"number":3}
]
Run Code Online (Sandbox Code Playgroud)

并想要选择(过滤)具有字段“number”的最大值或最小值的记录。

我可以获得“数字”的最小值或最大值,如下所示:

$ echo '[{"number":1},{"number":3}]' | jq ' [ .[].number ] | min'

(发出 1)

我可以输出布尔值:

$ echo '[{"number":1},{"number":3}]' | jq '.[].number==([ .[].number ] | min)'
true
false
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将其与 select 结合起来时,它失败了:

$ echo '[{"number":1},{"number":3}]' | jq 'map(select(.[].number==([ .[].number ] | min)))'
jq: error (at <stdin>:1): Cannot index number with string "number"
Run Code Online (Sandbox Code Playgroud)

我觉得我很接近,但被困住了。我究竟做错了什么?

提前致谢!

json max min jq

3
推荐指数
1
解决办法
3555
查看次数