We've run into an annoying edge-case with our use of BeforeRender. Our app utilizes BeforeRender to optimize priming/loading our object cache and data standardization. It's awesome and works great.
We recently noticed some odd bugs and a general slowness from caches that weren't primed properly. After spending most of the day debugging code , I found the culprits: - last month we introduced some code to render template partials via pyramid.renderer's `render`. - our transactional emails calls `render()` as well. Here's where the problem kicks in: these call to `render` expectedly trigger the `BeforeRender` event. This makes perfect sense. There's no way for Pyramid to know the difference between an email/partial template and a "repsonse oriented" render. So we need to figure out a way to render these edge cases without triggering BeforeRender, and consequently maintaining the "BeforeRender" for the "response oriented" events. I looked into trying to expose an eventless way to render items -- but under the hood `render` calls `RendererHelper.render`, which is used by every render method and has the BeforeRender event hardcoded. the only options that come to mind are : - build a custom render facility that mimicks the pyramid render environment, but obviously isn't render() - monkeypatch an eventless render tool into pyramid_renderers, and keep a close eye on the original package to ensure compatibility both of these seem to have a bit more overhead than i'd like. i'm wondering if anyone has another approach. i'm leaning towards the first option right now, because the mako environment isn't terribly complex. -- You received this message because you are subscribed to the Google Groups "pylons-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to pylons-discuss+unsubscr...@googlegroups.com. To post to this group, send email to pylons-discuss@googlegroups.com. Visit this group at http://groups.google.com/group/pylons-discuss. For more options, visit https://groups.google.com/d/optout.