将较长的元组传递到函数中,并希望将其解压缩为特定的变量。
高级级别:
考虑到我想做的事情,我的问题是:
已经尝试过:
,这里是工具和元组的位置:
multicast_sequence_problem_total = Counter(
"multicast_sequence_problem_total",
"Total of Sequence Errors (Multicast)",
['source_dc', 'destination_dc', 'vlan']
),
unicast_sequence_problem_total = Counter(
"unicast_sequence_problem_total",
"Total of Sequence Errors (Unicast)",
['source_dc', 'destination_dc', 'vlan']
),
multicast_duplicate_total = Counter(
"multicast_duplicate_total",
"Total of Duplicate Sequences (Multicast)",
['source_dc', 'destination_dc', 'vlan']
),
unicast_duplicate_total = Counter(
"unicast_duplicate_total",
"Total of Duplicate Sequences (Unicast)",
['source_dc', 'destination_dc', 'vlan']
)
latency_gauge = Gauge(
"latency_average_gauge",
"Latency Average",
['protocol', 'source_dc', 'destination_dc', 'vlan']
)
metrics = (
multicast_sequence_problem_total,
multicast_duplicate_total,
unicast_sequence_problem_total,
unicast_duplicate_total,
latency_gauge
)跳转到我的另一个函数中,实际上我增加了/设置了度量值--下面是解包:
mcast_seq, mcast_dup, uni_seq, uni_dup, avg_latency = metrics_tuple为了进行调试,使用了pdb,发现这5项指标中有3项实际上是类型: tuple:。
(Pdb) type(metrics_tuple)
<class 'tuple'>
(Pdb) type(avg_latency)
<class 'prometheus_client.metrics.Gauge'>
(Pdb) type(mcast_seq)
<class 'tuple'>
(Pdb) type(mcast_dup)
<class 'tuple'>
(Pdb) type(uni_seq)
<class 'tuple'>
(Pdb) type(uni_dup)
<class 'prometheus_client.metrics.Counter'>
(Pdb) 因此,当我在代码中取得更多进展时,这会导致一些错误。Python认为我正在尝试在其他地方打开包(在那里,我不想要元组!)
发布于 2019-09-12 17:12:44
在使用字典而不是元组后发现答案。我的度量对象是元组,原因是我忘记在它们被检测的度量之间删除一些逗号。
只有当我同时实例化字典或元组时(我没有这样做),这才有意义。
(facepalm) -花了一段时间才弄明白,但pdb输出拯救了我。向我展示的是,只有一些指标是元组的,而不是所有的。寻找他们之间的差异使我找到了答案。
https://stackoverflow.com/questions/57910976
复制相似问题