Apio y Rabbitmq en Django y Monitoreo con Flower, Solo un par de Pasos para que funcione Asincrónicamente

En mis 6 años de experiencia en codificación, sin duda, Django es el mejor framework con el que he trabajado. A veces construiremos una sencilla aplicación Django para ejecutar tareas asíncronas en segundo plano usando Apio y RabbitMQ.

Python 3.6.8, RabbitMQ 3.6.10

Django = = 2.2.3, flower = = 0.9.3, apio = = 4.3.0

instalar RabbitMQ:

apt-get install rabbitmq-server

El servicio RabbitMQ se inicia automáticamente tras la instalación. Puede iniciar el servidor manualmente ejecutando el siguiente comando en la línea de comandos.

rabbitmq-server

Después de la instalación de RabbitMQ, debe instalar python y el paquete relacionado con el comando pip como:

pip install Django
pip install celery

Luego, debe crear un proyecto Django con una aplicación simple, creamos el proyecto djangocelery con la aplicación l, puede clonar el proyecto djangocelery en mi GitHub.

Proyecto Djangocelery

djangocelery/|-- app/| |-- migrations/| |-- __init__.py| |-- admin.py| |-- apps.py| |-- models.py| |-- tests.py| +-- views.py|-- djangocelery/| |-- __init__.py| |-- settings.py| |-- urls.py| +-- wsgi.py|-- manage.py+-- requirements.txt

El primer paso debe agregar la configuración CELERY_BROKER_URL a la settings.py archivo: configuración

.py

CELERY_BROKER_URL = ‘amqp://localhost’

Agregue Apio a su proyecto Django

Cree un archivo con el nombre celery.py junto a su `settings.py ‘ file,

|-- djangocelery/| |-- __init__.py| |-- celery.py| |-- settings.py| |-- urls.py| +-- wsgi.py

Este archivo contendrá la configuración de apio para nuestro proyecto, Agregue el siguiente código al `celery.py ‘file:

El código anterior crea una instancia de nuestro proyecto, la última línea indica a celery que descubra automáticamente todas las tareas asíncronas para todas las aplicaciones listadas en `INSTALLED_APPS`.

Celery buscará definiciones de tareas asíncronas dentro de un archivo llamado `tasks.py ‘ archivo en cada uno de los directorios de la aplicación.

Editar el __init__.py

ahora edita __init__.py archivo en la raíz del proyecto con esta ruta:

|-- djangocelery/| |-- __init__.py

ábralo y copie el código de abajo en el archivo y guárdelo.

Esto asegurará que nuestra aplicación Apio sea importante cada vez que se inicie Django.

Creando la Primera Tarea de Apio

Podemos crear un archivo llamado tareas.py dentro de una aplicación de Django y poner todas nuestras tareas de Apio en este archivo, La aplicación de Apio que creamos en la raíz del proyecto recopilará todas las tareas definidas en todas las aplicaciones de Django enumeradas en INSTALLED_APPSconfiguration.

app/tasks.py

app/views.py

en Lugar de llamar a la celery_task directamente, estoy llamando a la celery_task.delay (), De esta manera estamos instruyendo a Celery para que ejecute esta función en segundo plano, luego Django sigue procesando my view celery_view y devuelve sin problemas al usuario

djangocelery/urls.py

Pero antes de probarlo, consulte la siguiente sección para aprender a iniciar el proceso de trabajador de apio.

Iniciar el proceso de trabajo

Abra una nueva pestaña de terminal en la ruta del proyecto y ejecute el siguiente comando:

celery -A djangocelery worker -l info

El resultado es algo así:

apio trabajador de la información

a continuación, ejecute Django proyecto de abrir el http://127.0.0.1:8000/celerytask/ después de unos segundos, Si revisamos el Apio Proceso de trabajo de nuevo, podemos ver que completó la ejecución, la primera carga de la página terminado y enviar tareas a apio, a continuación, apio recibió tareas:

Received Tasks

After 30seconds tasks functions done and return successful strings :

Monitoreo de trabajadores de Apio

Hay una práctica herramienta basada en la web llamada Flower que se puede usar para monitorear y administrar clústeres de Apio, Flower proporciona estadísticas detalladas del progreso y el historial de tareas, También muestra otros detalles de tareas como los argumentos pasados, la hora de inicio, el tiempo de ejecución y otros.

instalar Flor

pip install flower

una Vez instalado, se debe abrir una nueva línea de comandos en el directorio del proyecto y ejecute este comando :

celery -A djangocelery worker -l info

abra una nueva línea de comandos en la ruta del proyecto y ejecute este comando :

celery -A djangocelery flower

flor de conexión

Los detalles, a continuación, puede ver visitando http://localhost:5555/dashboard en el navegador como :

flower dashboard

flower tasks

flower task detalles

además :

Usted puede eliminar todas las tareas pendientes con :

celery -A proj purge

Eso es todo. Terminado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.