金字塔:为什么NewRequest订阅者每次请求都会调用3次?

Vit*_*mar 0 python pyramid

这对我很有意思,我已经检查过了.正如您所读,NewRequest订阅者在每个请求上被调用3次(或者在启用debug_toolbar的BeforeRender情况下调用7次...),而每个请求调用一次订阅者(在启用debug_toolbar的情况下调用> 30次).

所以,如果我想通过事件将mongodb连接到我的项目NewRequest,每个请求将完成3次...

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

提前致谢!!!

Mic*_*kel 5

金字塔NewRequest每次请求不会多次调用.这种情况发生的唯一原因是,如果您不小心多次注册您的订户.人们认为多次调用它的另一个常见原因是浏览器通常使用favicon请求跟踪请求,但这只会占2次调用.你可以更多地显示任何输出或描述你的问题,以使我确信订阅者真的被多次调用吗?

BeforeRender将被多次调用(每个模板渲染一次).当启用调试工具栏时,每个请求都会呈现很多东西,但即便如此,30个声音更像是我期望的3倍.

通常,连接到NewRequest订户中的数据库并不是一个好主意,因为该订户也会被调用静态资源(字面上所有请求).更好的模式是request通过对象创建惰性/具体化属性config.set_request_property.这将在您第一次在每个请求中使用数据库时连接,并且在您不这样做时不会影响性能.