You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS DocumentDB执行含UpdateOne的bulk_write报错不支持可重试写入怎么办

AWS DocumentDB下bulk_write报重试写入不支持的解决方案

报错根因

  • AWS DocumentDB 不兼容MongoDB的重试写入(Retryable Writes)特性,而3.6及以上版本的pymongo默认开启了该特性,执行bulk_write操作时会默认触发该特性校验,因此抛出301错误。
  • 你当前使用的UpdateOne+upsert的业务逻辑没有问题,无需修改业务操作,仅需调整数据库连接配置即可。

修复方法

在初始化MongoClient时显式指定关闭重试写入,添加retryWrites=False参数即可,修改后的代码如下:

from pymongo import MongoClient
from pymongo import UpdateOne

data = [] # list of dicts/documents
# 新增retryWrites=False参数关闭重试写入
mongo = MongoClient('some_host', retryWrites=False)
db = mongo['some_db']
collection = db['some_collection']
operations = [UpdateOne({'_id': d['_id']}, {'$set': d}, upsert=True) for d in data]
result = collection.bulk_write(operations)

如果你使用连接URI的方式初始化客户端,直接在URI尾部追加参数即可:

mongodb://[username]:[password]@[DocumentDB实例地址]:27017/?retryWrites=false

注意事项

关闭重试写入后,若操作过程中出现网络波动、实例临时不可用等异常,数据库驱动不会自动重试写入操作,你可以根据业务需求自行封装异常捕获和重试逻辑。


内容的提问来源于stack exchange,提问作者learningisfun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:45:01