apio

Apio contiene una capa de abstracción para la creación de modelos de datos de Django que son capaces de disparar tareas de Celery y de almacenar los resultados de la misma.

_images/apio_flowchart.png

Diagrama de flujo de apio.

  1. El usuario interactua con el modelo de datos mediante un formulario.
  2. Cuando el método save del modelo es llamado los datos de la petición (Request) se almacenan.
  3. En el mismo método save se llama a la tarea de Celery pasándole los datos de la petición que ha facilitado el usuario.
  4. Cuando la tarea es llamada, se dispara la señal pre_run generando una entrada en el modelo Execution.
  5. Al finalizar la tarea de Celery, se dispara la señal post_run actualizando el estado de la ejecución en el modelo Execution.

Modelos

Apio proporciona dos modelos abstractos: Request y Execution.

Request

Los datos del modelo Request representan las peticiónes usuario.

El desarrollador debe crear una subclase de Request añadiendo los campos que necesite para su tipo de petición.

Además existe un atributo especial llamado task al que se debe asignar la tarea de Celery que se desea ejecutar cuando se haga una petición.

Request Meta

Los models que heredan de Request pueden contener atributos adicionales en la clase Meta.

apio_task

Tarea de Celery que se ha de ejecutar por cada petición.

apio_fields

Tupla de nombres de campos del modelo que se deben pasar como argumentos a la tarea de Celery. Por defecto se pasarán todos los campos definidos por el usuario.

apio_excluded_fields

Tupla de nombres de campos del modelo que se deben excluir al pasar los argumentos a la tarea de Celery.

apio_execute_on_save

Atributo que de tipo bool que define si se debe invocar la tarea en el momento del guardado.

Execution

Las entradas del modelo Execution representan las ejecuciones de tareas de Celery que se han generado por cada una de las peticiones. Tenga en cuenta que una petición puede ejecutarse más de una vez si, por ejemplo, se produce un fallo en la primera ejecución.

Ejemplo

Note

Añadir un ejemplo de uso

Project Versions

Table Of Contents

This Page