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

RavenDB Python客户端是否存在UseOptimisticConcurrency选项?

RavenDB Python客户端乐观并发功能说明
  • 首先明确:RavenDB Python客户端默认开启乐观并发,不需要手动设置类似.Advanced.UseOptimisticConcurrency的显式开关。
  • 实现逻辑:当你通过session加载文档时,客户端会自动捕获文档的@etag标识;在执行save_changes()更新/删除操作时,会将该etag发送至服务器。服务器会对比当前文档的etag值,若不匹配则抛出ConcurrencyException,以此实现并发冲突检测。

代码示例

from ravendb import DocumentStore, ConcurrencyException

# 初始化文档存储
with DocumentStore(urls=["http://localhost:8080"], database="DemoDB") as store:
    store.initialize()
    
    # 开启会话
    with store.open_session() as session:
        # 加载文档,自动记录etag
        target_doc = session.load("products/1")
        target_doc["price"] = 99.9
        
        try:
            # 保存变更,触发etag校验
            session.save_changes()
        except ConcurrencyException:
            # 处理并发冲突场景
            print("该文档已被其他进程修改,请重试")
  • 若需临时关闭特定文档的乐观并发校验(仅特殊场景使用),可调用session.advanced.ignore_etag(doc)方法,这样更新时服务器会跳过etag对比:
# 加载文档后,忽略其etag校验
session.advanced.ignore_etag(target_doc)
  • 关于文档缺失的问题:目前RavenDB官方文档对Python客户端的覆盖确实不足,建议直接查看客户端源码(如session.py、advanced_session_operations.py文件)来确认功能细节,后续可关注官方文档的更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:12:08