我有一个巨大的 python 字典(写入 JSON 时几乎没有什么用处)。在将字典写入磁盘之前,有一堆例程获取该字典并使用某些路径中的信息(遗留代码)。
我想跟踪访问/使用哪些路径。一种方法是浏览这个遗留代码,我正在寻找一种避免这种情况的方法。
我可以在调用这些遗留例程之前检测代码。我能做些什么来跟踪/记录正在访问的巨大字典中的路径。
例如
{
"a": {
"b": {
"c": "d"
}
}
"e": {
"f": {
"g": "h"
}
}
Run Code Online (Sandbox Code Playgroud)
假设遗留代码访问了键“g”,我需要记录路径(e:f:g)。我想在不触及/修改遗留代码的情况下执行此操作。
我想了解 sidecar 容器是否可以向主容器进程发送 unix 信号)。
用例是我将 Nginx 作为主要内容服务应用程序容器运行,并且我希望 sidecar 容器接收 Nginx 配置更新并通过发送信号重新加载 Nginx。这两个容器将在单个 Pod 中运行。
PS:我没有环境可以尝试,但想检查人们是否使用过这样的模式?
我想生成这个:
GET /packets-2017-09-25/_search
{
"size": 0,
"query": {
"match": {
"transport_protocol": "tcp"
}
},
"aggs": {
"clients": {
"terms": {
"field": "layers.ip.src.keyword",
"size": 1000,
"order":{ "num_servers.value":"desc" }
},
"aggs": {
"num_servers": {
"cardinality": {
"field": "layers.ip.dst.keyword",
"precision_threshold" : 40000
}
},
"server_list": {
"terms": {
"field": "layers.ip.dst.keyword"
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
即我想要客户端下的两个存储桶 (num_servers) 和 (server_list)。
我正在尝试下面的代码,它出错了:
def get_streams_per_client(proto='tcp', max=40000):
s = Search(using=client, index="packets-2017-09-25") \
.query("match", transport_protocol=proto)
s.aggs.bucket('clients', 'terms', field='layers.ip.src.keyword', size=max, order={"num_servers.value":"desc"})\
.bucket('num_servers', 'cardinality', field='layers.ip.dst.keyword', precision_threshold=40000)\
.bucket('server_list', 'terms', field='layers.ip.dst.keyword') …Run Code Online (Sandbox Code Playgroud)