我有一個包含3個成員和一個存儲數據的Python應用程序的MongoDB副本集。如何使用insert_many方法處理pymongo AutoReconnect異常
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
我不知道但如何使用批量寫入時,處理這些異常,例如:
我可以使用單個文檔插入時,用包裝材料如下處理pymongo的AutoReconnect
例外insert_many
方法。根據documentation,批量寫入不是原子性的,因此即使發生其中一個例外,也可能已經有一些文檔成功寫入數據庫。因此,我不能像上面那樣簡單地重用包裝器方法。
如何處理這些情況的最佳方式是什麼?
相關:HTTPS ://gist.github.com/anthonywu/1696591 – TheChetan
您提供的代碼與我在問題中發佈的內容基本相同。我的用例不同,涉及批量操作,因爲部分文檔已經寫入數據庫,所以不能簡單地重試。 –