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.

Reply via email to