模型内的金字塔事件

jul*_*icz 5 python events sqlalchemy thread-local pyramid

我正在使用Pyramid 1.4.我想从我的模型类中生成一些自定义Pyramid事件.事件生成如下:

request.registry.notify(MyCustomEventType("Here it comes"))
Run Code Online (Sandbox Code Playgroud)

如您所见,我需要访问应用程序注册表.我知道get_current_registry()功能.但我也很关注Pyramid网站上的评论:

"这个功能应该非常谨慎地使用,通常只在单元测试代码中使用"

问题:

  • 从数据层生成Pyramid事件(SQLAlchemy模型)一般是个坏主意吗?
  • 如果没有,如何以更文明的方式访问应用程序注册表?(Base或许扩展模型?)
  • 如果,是否有一些我可以使用的替代品.我知道SQLAlchemy事件,但我找不到生成自定义事件的能力.

理由:

基本上,我将我的应用程序划分为功能,并尝试将它们分离.为此,我有时需要IoC:我计划将事件作为一种手段.例如,每当用户回答问题时,都会发出事件.然后,可以在应用程序的其他部分订阅这样的事件.我喜欢将应用程序逻辑保留在模型中而不是视图中.因此,所描述的问题.

Ric*_*ick 1

从模型中触发金字塔事件的用例是什么?一般来说,这是一个坏主意。

至于连接应用程序/模型。其中大部分是在 main() 中的初始化调用中完成的,该调用将设置传递给模型以为其提供连接设置等。我会确保将事物绑定在一起的任何逻辑都仅限于应用程序启动时的单个函数调用。

最后,我想你想要的东西最好用另一种方式来完成。