如何覆盖Pyramid的会话工厂?

时间:2015-02-22 15:55:47

标签: pyramid

我正在尝试在同一个项目中同时使用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)

我正在使用main() __init__.py方法导入这些模块,如下所示:

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

金字塔v.1.5.1,pyramid_beaker 0.8和pyramid_persona 1.5。

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

1 个答案:

答案 0 :(得分:1)

您可以通过自己调用config.set_session_factory来包含插件后覆盖会话工厂。或者,选择您想要的那个并在它们之间调用config.commit。这是Pyramid conflict resolution mechanism的一部分。