Kolibri is a reusable Django app for designing and executing asynchronous processes and workflows. A workflow is a collections of steps in a defined order, processing data in each step. A step can break the flow if an exception is raised and/or a specified step can be executed to handle a specific exception. Kolibri uses celery to handle processing in the background. All processors and workflows can only be started by staff members, but more fine grained access control might be implemented in future versions.
The project got started because I needed to control how I added content to a photo project I'm developing in django. The project involved lots of heavy processes like thumbnail generation and metadata processing. Adding content consists of steps that needs to be done in a specific order, and I need to control what action to take if one step throws an exception. I was using celery, but adding a new step or process was tedious and I wanted more dynamic way of defining and managing processors.
The current implementation is not stable and a proof of concept. Comments very welcome, especially on how to monitor status of celery processes and provide feedback to the user.
pip install django-kolibri
hg clone https://bitbucket.org/weholt/django-kolibri python setup.py install
set STATIC_ROOT and STATIC_URL in settings.py
add 'kolibri' to your installed apps
add url(r'^kolibri/', include('kolibri.urls')), to your urls.py
It would be smart to read through usage.txt first for a more detailed tutorial or experiment with the working example project provided in the source, available at bitbucket.
Here are some key features of "Kolibri":
· asynchronous processes, which can process items/querysets or execute processes not related to specific models or instances (sending email, scanning filesystems etc)
· connect several processors into workflows, with exception handling, clean-up steps and an optional fluent interface
· template tags to handle execution of processors/workflows for an item or queryset in your templates
· admin action integration for your models
· dashboard listing running processors
· a concept of pending processors and a history of what has been processed so you don't execute unnecessary processesors or workflows
· user exclusive processors so two users can execute the same processor at the same time without touching the same data
· logging and history, with direct link to processed instances
· ajax integration using jquery
What's New in This Release: [ read full changelog ]
· Support for user input. See bottom of usage description for more info.