基于 python 中的键进行节流

Throttling based on keys in python

我想知道是否有一种方法可以在纯 python 中限制事件。 例如,通常其他工具有一种查看特定事件的方法,比如:

{"id":111,"message":"hello","host":"example"}

可能还有另一个事件紧随其后或在一段时间内发生,如下所示:

 {"id":112,"message":"hello","host":"example"}

鉴于这两个事件,您通常可以查看事件中的 2 个键,因此对于此示例,message 键和 host 键在两个事件之间具有相同的值。因为这 2 个事件具有相同的 key 和 value,所以您可以将它们视为一个事件。这就是我想要 "throttling" 的方式。

我想知道在 python 中是否有执行此操作的好方法,我正在考虑使用 database/redis 但不确定最好的方法是什么。对于事件,id 是唯一的。

谢谢!

编辑:我实际上已经完成了这是 Logstash,但我一直在寻找一种方法来做到这一点 python。

这样的事情怎么样?我假设这些是您正在查看的词典(这就是它们的样子)。

首先,让 keys 成为您要查找的键集。假设 DE 是您正在查看的事件。

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 way" 来执行此操作,但是已经有一段时间了,我没有时间查找它。至少这适用于我试过的例子。

编辑:请注意,如果您只有想要查找的那两个键,则可以丢弃 keys 和循环,直接测试它们。