我正在使用twisted中的高速公路服务器来提供RPC API。有些调用需要查询数据库,多个客户端可以通过websocket连接到服务器。
我正在使用SqlAlchemy ORM访问数据库。
以下两种处理SqlAlchemy会话的方法有哪些优缺点。
你会推荐哪个?为什么? (我倾向于2)
答案 0 :(得分:3)
使用PostgreSQL,Oracle或SQLite等数据库从Twisted(和Autobahn)进行基于SQL的数据库访问的推荐方法是twisted.enterprise.adbapi。
twisted.enterprise.adbapi
将在后台线程池上运行查询,这是必需的,因为大多数数据库驱动程序都是阻塞的。
旁注:对于PostgreSQL,存在本地异步,非阻塞 司机还:txpostgres。
现在,如果你在本机SQL驱动程序之上放置一个像SQLAlchemy这样的ORM,我不确定它如何与twisted.enterprise.adbapi
一起工作(如果有的话)。
所以你提到的选项
另见here。
答案 1 :(得分:1)
如果您同时使用SQLAlchemy和Twisted,请考虑使用Alchimia而不是内置adbapi
。