我想知道是否有办法在纯python中限制事件。 例如,通常其他工具可以查看特定事件,例如:
{"id":111,"message":"hello","host":"example"}
并且可能会出现另一个事件,该事件恰好在时间间隔之后或之内:
{"id":112,"message":"hello","host":"example"}
鉴于这两个事件,您通常可以查看事件中的2个键,因此对于此示例,消息键和主机键之间具有相同的值这两件事。由于这两个事件具有相同的键和值,因此您可以将它们视为一个。这就是我想要“节流”的方式。
我想知道在python中是否有一个很好的方法可以做到这一点,我正在考虑使用数据库/ redis,但不确定最好的方法是什么。对于事件,id是唯一的。
谢谢!
编辑:我实际上已经完成了这个是Logstash,但我一直在寻找一种方法来实现纯Python。答案 0 :(得分:1)
这样的事情怎么样?我假设这些是你正在看的字典(这就是它们的样子)。
首先,让keys
成为您要查找的键集。假设D
和E
是您正在查看的事件。
found = False
for k in keys:
if D[k] == E[k]:
keys2 = copy(keys)
keys2.remove(k)
for l in keys2:
if D[l] == E[l]:
found = True
break
if found: break
可能有更好的“Python方式”来做到这一点,但它已经有一段时间了,我没有时间查找它。至少这是我尝试过的例子。
编辑:请注意,如果您只想要查找这两个键,则可以放弃keys
和循环,直接测试它们。