我正在尝试使用 pymongo 来监听更改流,同时对故障/重启有弹性。因此,我将恢复令牌存储在 Redis 中以供以后重用。
这是我尝试过的代码
# Skipping pymongo and redis initialisation
if redis.exists('resumeToken'):
resume_token = pickle.loads(redis.get('resumeToken'))
else:
resume_token = None
stream = db.my_collection.watch(
pipeline=[{'$match': {'fullDocument.type': 'something'}}],
resume_after=resume_token,
full_document='updateLookup',
max_await_time_ms=500
)
change = stream.next()
redis.set('resumeToken', pickle.dumps(change['_id']))
print(change)
第一次运行时,打印了一个更改,我得到了一些存储在 Redis 中的内容。
但是如果我重新运行,我收到以下错误:
pymongo.errors.OperationFailure: The resume token UUID does not exist. Has the collection been dropped?
我正在使用 MongoDB 3.6.1 和 pymongo 3.7.1-1.1。
任何人都知道为什么我的简历令牌被拒绝?