[英]Best Practice to Unpack Longer Tuples (Python 3.6)
高水平:
鉴于我要做什么,我的问题是:
已尝试:
这是仪器和放入元组的位置:
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认为我正在尝试在其他地方打开包装(我不希望有元组!)
在使用字典而不是元组后发现了答案。 我的指标对象是元组,原因是我忘了删除它们所用的指标之间的逗号。
只有当我同时实例化字典或元组时(我没有这样做),这才有意义。
(facepalm)-花了点时间弄清楚,但是pdb输出救了我。 告诉我,只有一些指标是元组,而不是全部。 找出它们之间的差异,我找到了答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.