到目前为止,我将“is_fresh_instance”视为“我不知道以前的历史,所以我再次向您发送所有数据”。当我的“since”为“0”或类似时,这很好用。我得到了一切,我将“is_fresh_instance”解释为这不是增量更新而是完全转储的信号。
但我今天看到了这个。
我正在监视一棵树,其中包含 200 多个目录和 12.000 个文件。我在里面创建了一个新文件。我的文件监视器处于脱机状态(守望者进程正在运行但没有人订阅)。我启动我的文件监视器,它请求一个带有“since”的“增量”转储。我明白了:
{'unilateral': True, 'subscription': 'Buffy', 'root': '/home/meta', 'is_fresh_instance': True, 'version': '4.9.0', 'clock': 'c:1517109517:10868:2:97', 'files': [{'name': 'dir', 'exists': True, 'oclock': 'c:1517109517:10868:2:97', 'ctime_ns': 1517168825691348944, 'new': True, 'mode': 16877}, {'name': 'dir/FILE.TXT', 'exists': True, 'oclock': 'c:1517109517:10868:2:97', 'ctime_ns': 1517168825787349000, 'new': True, 'mode': 33188}]}
在这里,我收到“is_fresh_instance=True”,但收到了增量通知。如何进行?。目录“dir”被标记为“new”(不是),然后我想我应该做一个“查询”来请求内容,但是我不明白为什么我会收到新文件的通知无论如何都应该扫描目录,因为它是“新的”(不是)。
我发现守望者语义真的很混乱。文档导航很糟糕,我没有看到任何我可以研究的例子。
当我得到“is_fresh_instance=True”时,守望者希望我做什么?
这种情况是 100% 可重现的。如果我在订阅过程中创建文件,我会看到“is_fresh_instance=False”。如果我的监视器处于脱机状态,并且当它返回时它会请求带有最新时钟的“since”,我会收到相同的通知(目录和文件),但带有“is_fresh_instance = True”。
帮助!。Python 代码示例?