如何覆盖金字塔的会话工厂?

how to override Pyramid's session factory?

我正在尝试在同一项目中同时使用 pyramid_persona 和 pyramid_beaker。但是,两者都在其 includeme() 方法中设置了 session_factory,这会导致此错误:

pyramid.exceptions.ConfigurationConflictError: Conflicting configuration actions
  For: <InterfaceClass pyramid.interfaces.ISessionFactory>
Line 173 of file /home/pyramid/project_env/local/lib/python2.7/site-packages/pyramid_beaker/__init__.py:
  config.set_session_factory(session_factory)
Line 50 of file /home/pyramid/project_env/local/lib/python2.7/site-packages/pyramid_persona/__init__.py:
  config.set_session_factory(session_factory)

我正在从 __init__.pymain() 方法中导入这些模块,如下所示:

config.include("pyramid_persona")
config.include("pyramid_beaker")

使用 pyramid v. 1.5.1、pyramid_beaker 0.8 和 pyramid_persona 1.5。

有没有办法告诉 Pyramid 可以覆盖 session_factory?

您可以在包含插件后通过自己调用 config.set_session_factory 覆盖会话工厂。或者 select 你想要的那个,然后在它们之间调用 config.commit。这是金字塔 conflict resolution mechanism.

的一部分