5

我正在使用金字塔 1.4。我想从我的模型类中生成一些自定义 Pyramid 事件。事件是这样生成的:

request.registry.notify(MyCustomEventType("Here it comes"))

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

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

问题

  • 从数据层(SQLAlchemy 模型)生成 Pyramid 事件通常是个坏主意吗?
  • 如果没有,如何更文明地访问应用注册中心?Base(也许是扩展模型?)
  • 如果,是否有一些我可以使用的替代方案。我知道 SQLAlchemy 事件,但我找不到生成自定义事件的能力。

理由

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

4

1 回答 1

1

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

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

最后,虽然我想你想要的最好以另一种方式完成。

于 2013-02-04T12:20:04.730 回答