作者:艺维网络传媒 | 来源:互联网 | 2023-02-01 17:40
我有一个包含3个成员的MongoDB副本集和一个存储数据的Python应用程序.
AutoReconnect
当使用带有包装器的单个文档插入时,我可以处理pymongo的异常,如下所示:
def safe_mongo_call(method, num_retries, *args, **kwargs):
while True:
try:
return method(*args, **kwargs)
except (pymongo.errors.AutoReconnect,
pymongo.errors.ServerSelectionTimeoutError) as e:
if num_retries > 0:
logger.debug('Retrying MongoDB operation: %s', str(e))
num_retries -= 1
else:
raise
我不确定在使用批量写入时如何处理这些异常,例如insert_many
方法.根据文档,批量写入不是原子的,因此即使发生其中一个异常,也可能已经有一些文档成功写入数据库.因此,我不能简单地重用上面的包装器方法.
如何处理这些情况的最佳方法是什么?