0

这对我来说很有趣,我已经检查过了。如您NewRequest所见,每个请求调用订阅者 3 次(或启用 debug_toolbar 时调用 7 次...),而BeforeRender每个请求调用订阅者 1 次(启用 debug_toolbar 时调用 > 30 次)。

因此,如果我想通过事件将mongodb连接到我的项目NewRequest,每个请求将执行 3 次...

这是为什么?为什么服务器要对每个请求执行 3 次相同的工作?

提前致谢!!!

4

1 回答 1

5

Pyramid 每个请求不会NewRequest多次调用。发生这种情况的唯一原因是您不小心多次注册订阅者。人们认为它被多次调用的另一个常见原因是浏览器通常会跟随带有 favicon 请求的请求,但这仅占 2 次调用。您能否显示任何输出或更多地描述您的问题以使我相信订户确实被多次调用?

BeforeRender将被调用多次(每个模板渲染一次)。启用调试工具栏后,每个请求都会呈现很多东西,但即使这样,30 听起来更像是我期望的 3 倍。

一般来说,在订阅者中连接到您的数据库并不是一个好主意NewRequest,因为该订阅者也会被调用以获取静态资源(实际上是所有请求)。更好的模式是request通过config.set_request_property. 这将在您第一次在每个请求中使用数据库时连接,并且在您不使用时不会降低性能。

于 2012-07-27T13:54:03.777 回答