django-compiling-loader 0.0.1

Creator: danarutscher

Last updated:

Add to Cart

Description:

djangocompilingloader 0.0.1

A template loader that compiles Django templates into Python bytecode
for improved performance.



This package exposes the compiling_loader.Loader template
loader. This loader will compile the template syntax tree generated by
Django into Python bytecode. If a tag can’t be generated, a fallback
will be compiled, which just evaluates the template nodes. The
fallback method means that this loader is compatible with the existing
loaders, even if you have a lot of custom tags.
The compiler is modular and built around Python 3.4’s
singledispatch function, meaning that it can easily be extended to
support your own tags if you have expensive custom tags that would
benefit from compilation.
The loader itself does not do any caching; it works together with
Django’s built-in cached loader to avoid recompilation.

Usage
Install the django-compiling-loader Python package and set the
TEMPLATE_LOADERS settings to the following value:
TEMPLATE_LOADERS = (
('django.template.loaders.cached.Loader', [
('compiling_loader.Loader', [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
]),
]),
)
If you have other loaders, put them inside the
compiling_loader.Loader list to ensure that the generated
templates get compiled.


Compatibility
The loader has been tested with Django 1.7, and requires Python
3.4. When it comes to rendering compatibility, this project contains a
fair number of test cases that compare the render output from the
standard Django template evaluation and this compiler. So far, no
incompatibilities have been found.


Performace
The test_proj/run_benchmarks.py script renders a small inheritance
based template a large number of times, as well as a large both
inheritance and include based template a few times. Below are some
comparisons:


Template
Default
Compiled
Speedup



Small
0.21 ms
0.10 ms
2,1x

Large
125 ms
42 ms
3,0x

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.