rethinkdb-python:一个驱动通吃六种运行模式
rethinkdb-python:一个驱动通吃六种运行模式
RethinkDB 是第一个为实时应用打造的开源数据库。传统数据库需要应用层反复轮询才能感知数据变化,RethinkDB 的思路不同:它把更新后的查询结果主动推送给应用,免去了手动轮询的开销。构建实时协作工具、实时仪表盘这类场景,开发周期能缩短不少。
rethinkdb-python 是它的官方 Python 驱动独立包,从 RethinkDB 2.4 版本的原始驱动中抽出并独立维护。pip 一行装完,同时支持同步阻塞和五种异步 I/O 模式,算是 Python 生态里对异步框架覆盖最全的数据库驱动之一。

一个驱动,六种模式
这个驱动最显眼的特点是对异步框架的覆盖。除默认的阻塞 I/O 模式(标准 Python socket),还原生支持五种异步框架:
- Asyncio:Python 3.5 以上原生协程,
async for遍历查询结果,异步上下文管理器自动管理连接生命周期 - Gevent:基于 greenlet 的协程方案,适合已有 Gevent 技术栈的项目
- Tornado:兼容 Tornado 5.0 以下版本,
gen.coroutine装饰器写法 - Trio:结构化并发的代表框架,驱动层面额外提供了
ConnectionPool连接池 - Twisted:经典的
defer.inlineCallbacks回调风格
切换模式只需要一行 r.set_loop_type(),核心的增删改查逻辑完全不用动。对需要同时维护同步和异步代码路径的项目来说,这一点省了不少适配工作。
以 asyncio 模式为例,完整的建表、插入、查询流程:
import asyncio
from rethinkdb import r
async def main():
async with await r.connect(db='test') as connection:
await r.table_create('marvel').run(connection)
await r.table('marvel').insert({
'id': 1,
'name': 'Iron Man',
'first_appearance': 'Tales of Suspense #39'
}).run(connection)
cursor = await r.table('marvel').run(connection)
async for hero in cursor:
print(hero['name'])
r.set_loop_type('asyncio')
asyncio.run(main())
异步上下文管理器在代码块结束时自动关闭连接,不用手动调 close()。几个异步框架的 API 风格各自契合框架本身的惯用写法,不会让人觉得生硬。
和旧版驱动的区别
RethinkDB 2.4 把 Python 驱动从主仓库中独立出来,形成了这个项目。老版本用户迁移成本很低,主要变化是推荐 from rethinkdb import r 代替 import rethinkdb as r,两种导入方式都兼容。官方还专门加了一个迁移快捷方式,确保旧代码不用改动就能继续跑。
实际表现
RethinkDB 的核心卖点是 changefeed:数据库直接向应用端推送数据变更,不用引入 Redis Pub/Sub 或 Kafka 这类外部消息中间件。在这个驱动里,异步模式下的 changefeed 实现更贴合直觉,asyncio 的 async for 遍历实时数据流,代码读起来就像处理本地集合。
测试基础设施做得比较周到,分了三个层级:make test-unit 跑单元测试,make test-integration 跑本地集成测试,make test-remote 则是通过 DigitalOcean API 自动创建临时 Droplet 跑远程集成测试。远程测试会生成临时 SSH 密钥和虚拟机,跑完自动销毁。RethinkDB 官方已经停止支持 Windows,这套机制让 Windows 上的开发者也能参与贡献。

适合谁用
Star 数 64,不算热门。但 RethinkDB 的用户群体比较固定,这个驱动作为官方维护的独立包,对现有用户来说是核心依赖。特别是技术栈里同时跑了多个异步框架的团队,一个驱动通吃所有模式,能少装好几个依赖包。
RethinkDB 的定位跟 Redis、Kafka 不是直接竞争关系,它提供的是另外一条路:数据库层直接支持实时推送,架构上省掉中间人。这个 Python 驱动让这种设计落了地,用起来也不重。
安装就一行:
pip install rethinkdb
贡献指南写得直白,开头那句 “Hurray! You reached this section” 挺能反映社区的态度。如果你在用 RethinkDB,或者对「数据库主动推送」这个方向感兴趣,可以装一个试试。
d this section" 挺能反映社区的态度。如果你在用 RethinkDB,或者对「数据库主动推送」这个方向感兴趣,可以装一个试试。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)