Sqlalchemy会话和高速公路

Sqlalchemy会话和高速公路,sqlalchemy,twisted,autobahn,Sqlalchemy,Twisted,Autobahn,我使用twisted中的autobahn服务器来提供一个RPC API。有些调用需要查询数据库,多个客户端可能通过websocket连接到服务器 我正在使用SqlAlchemy ORM访问数据库 以下两种处理SqlAlchemy会话的方法的优缺点是什么 为每个RPC调用创建和销毁会话 在服务器启动时创建单个会话,并在每次RPC调用中使用它 你会推荐哪一种?为什么?(我倾向于2)从Twisted(和Autobahn)对PostgreSQL、Oracle或SQLite等数据库进行基于SQL的数据库访

我使用twisted中的autobahn服务器来提供一个RPC API。有些调用需要查询数据库,多个客户端可能通过websocket连接到服务器

我正在使用SqlAlchemy ORM访问数据库

以下两种处理SqlAlchemy会话的方法的优缺点是什么

  • 为每个RPC调用创建和销毁会话
  • 在服务器启动时创建单个会话,并在每次RPC调用中使用它

  • 你会推荐哪一种?为什么?(我倾向于2)

    从Twisted(和Autobahn)对PostgreSQL、Oracle或SQLite等数据库进行基于SQL的数据库访问的推荐方法是

    twisted.enterprise.adbapi
    将在后台线程池上运行查询,这是必需的,因为大多数数据库驱动程序都处于阻塞状态

    旁注:对于PostgreSQL,有一个本机异步、非阻塞 驱动程序也:

    现在,如果将类似于SQLAlchemy的ORM放在本机SQL驱动程序之上,我不确定这将如何与
    twisted.enterprise.adbapi
    一起工作(如果有的话)

    从你提到的选项来看

  • 这是不可能的,因为大多数驱动程序都在阻塞(高速公路的RPC运行在主线程=扭曲的反应器线程上,而您不能阻塞它)
  • 这样,您需要将数据库会话放在后台线程中(同样,不要阻塞)

  • 另请参见。

    建议使用PostgreSQL、Oracle或SQLite等数据库从Twisted(和Autobahn)访问基于SQL的数据库

    twisted.enterprise.adbapi
    将在后台线程池上运行查询,这是必需的,因为大多数数据库驱动程序都处于阻塞状态

    旁注:对于PostgreSQL,有一个本机异步、非阻塞 驱动程序也:

    现在,如果将类似于SQLAlchemy的ORM放在本机SQL驱动程序之上,我不确定这将如何与
    twisted.enterprise.adbapi
    一起工作(如果有的话)

    从你提到的选项来看

  • 这是不可能的,因为大多数驱动程序都在阻塞(高速公路的RPC运行在主线程=扭曲的反应器线程上,而您不能阻塞它)
  • 这样,您需要将数据库会话放在后台线程中(同样,不要阻塞)

  • 也见.

    如果你使用的是SqLalCyy并扭在一起,考虑使用而不是内置的<代码> ADBAPI

    < P>如果你使用SqLalCyy并扭在一起,考虑使用而不是内置的<代码> ADBAPI .< /P> EH,没有ORM就没有多少剩余,没有ORM就没有多少剩余了。