Pyramid 请求的线程安全 SQLAlchemy 会话
Thread safe SQLAlchemy session for Pyramid requests
文章 What the Zope Transaction Manager Means To Me (and you) 演示了一种以这种方式将 SQLAlchemy DB 会话附加到每个请求的好方法:
def includeme(config):
settings = config.get_settings()
engine = engine_from_config(settings)
maker = sessionmaker()
register(maker)
maker.configure(bind=engine)
config.add_request_method(lambda request: maker(), 'db_session', reify=True)
这种方法的问题在于 "the transaction manager is still provided as a threadlocal under this design"。知道如何解决吗?谢谢!
https://gist.github.com/mmerickel/84b34ee5d68ed20dae10#file-model-py-L16-L19
由于 pyramid_tm
包中的一些改进,您实际上可以完全删除线程本地事务管理器。这是否是个好主意取决于您。
文章 What the Zope Transaction Manager Means To Me (and you) 演示了一种以这种方式将 SQLAlchemy DB 会话附加到每个请求的好方法:
def includeme(config):
settings = config.get_settings()
engine = engine_from_config(settings)
maker = sessionmaker()
register(maker)
maker.configure(bind=engine)
config.add_request_method(lambda request: maker(), 'db_session', reify=True)
这种方法的问题在于 "the transaction manager is still provided as a threadlocal under this design"。知道如何解决吗?谢谢!
https://gist.github.com/mmerickel/84b34ee5d68ed20dae10#file-model-py-L16-L19
由于 pyramid_tm
包中的一些改进,您实际上可以完全删除线程本地事务管理器。这是否是个好主意取决于您。