Wichert Akkerman wrote:
> Malthe Borch wrote:
>> Currently, an option to keep a cache of translated templates is
>> offered via an environment variable, making application startup
>> considerably faster. However, it might be more intuitive to follow
>> Python's behavior of writing a .pyc-file next to the original file.
>>
>> This could only work for us, if all current "translations" of the
>> template would be kept in the same file. Hence, instead of using the
>> canonical symbol ``render`` for the render-method, we'd use
>> ``render_some_signature`` and have them appear one next to the other
>> in the .pyc file.
>>
>> The cache would function like so:
>>
>> 1) Try to import the render-method from the file "my_template.pt.pyc"
>> 2) If this fails, compile the template and append it to this .pyc file
>> (by remarshalling the module contents).
> 
> Kid does something similar I think. It has the nasty side-effect of 
> requiring an __init__.py in each template directory, but that is 
> probably just a flaw in its implementation.
> 
> The only possible worry I have is that you may not be able to write to 
> the directory containing the templates. I don't think it is problematic 
> if that only hurts performance, but it should not break the whole thing.

It is a very common setup to disallow the Unix user running the
application process to disallow write access to any of the file system
locations. For Python environments that usually means as part of the
installation process of the application all pyc and pyo files (and with
zope.i18n mo files for translations) need to be compiled.

An example of this setup is the buildout based and so called 'unified'
Plone installers.

If we can make sure, there is a way to compile all those cached
templates without the application running, we should be fine. See
precompiler [1] for an example.

If we need the whole application to be running or cannot generate all
cached files upfront, this is not acceptable in my opinion.

The main idea of using environment variables for this kind of
configuration from my point of view is to make those into sys admin
changeable settings.

Cache paths should not be hardcoded by developers, but be available as
sys admin friendly settings. Changing Python code or ZCML is not
something a sys admin should ever need to do. Changing buildout-style
configuration or zope.conf is something sys admins can do.

Hanno

[1] http://pypi.python.org/pypi/plone.recipe.precompiler


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"z3c.pt" group.
To post to this group, send email to z3c_pt@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/z3c_pt?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to