Celery e Rabbitmq in Django e Monitoraggio con Flower, solo un paio di passaggi per far funzionare Async

Nei miei 6 anni di esperienza di codifica, senza dubbio, Django è il miglior framework con cui abbia mai lavorato. A volte costruiremo una semplice applicazione Django per eseguire attività asincrone in background utilizzando Celery e RabbitMQ.

Python 3.6.8, RabbitMQ 3.6.10

Django==2.2.3 , flower==0.9.3 , celery==4.3.0

installa RabbitMQ:

apt-get install rabbitmq-server

Il servizio RabbitMQ si avvia automaticamente al momento dell’installazione. È possibile avviare manualmente il server eseguendo il seguente comando sulla riga di comando.

rabbitmq-server

Dopo RabbitMQ installazione, è necessario installare python e relative pacchetto pip comando:

pip install Django
pip install celery

Quindi, è necessario creare un Django progetto con una semplice app, creiamo djangocelery progetto con l app, è possibile clonare il djangocelery progetto sul mio GitHub.

Progetto 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

Il primo passo è necessario aggiungere la configurazione CELERY_BROKER_URL al settings.py file:

impostazioni.py

CELERY_BROKER_URL = ‘amqp://localhost’

Aggiungere il Sedano per la tua Django Progetto

Creare un file denominato celery.py adiacenti `settings.py` file,

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

Questo file contiene il sedano di configurazione per il nostro progetto, Aggiungere il seguente codice all’ `celery.py` file :

Il codice precedente crea un’istanza del nostro progetto, L’ultima riga indica il sedano di auto-scoperta di tutte le attività asincrone per tutte le applicazioni elencate sotto ” INSTALLED_APPS`.

Celery cercherà le definizioni delle attività asincrone all’interno di un file denominato `tasks.py ‘ file in ciascuna delle directory dell’applicazione.

Modifica il __init__.py

ora modifica __init__.py file nella root del progetto con questo percorso:

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

aprilo e copia il codice sottostante nel file e salvalo.

Questo farà in modo che la nostra applicazione Sedano è importante ogni volta che Django inizia.

Creazione del primo compito Sedano

Possiamo creare un file denominato task.py all’interno di un’app Django e mettere tutte le nostre attività di sedano in questo file, L’app Sedano che abbiamo creato nella radice del progetto raccoglierà tutte le attività definite in tutte le app Django elencate in INSTALLED_APPSconfiguration.

app/tasks.py

app/views.py

Invece di chiamare il celery_task direttamente, sto chiamando celery_task.delay(), in Questo modo stiamo istruendo il Sedano per eseguire questa funzione in background quindi Django continuare l’elaborazione mio punto di vista celery_view e restituisce senza problemi per l’utente

djangocelery/urls.py

Ma prima di provare, controllare la sezione successiva per sapere come avviare il Sedano processo di lavoro.

Avvio del processo di lavoro

Aprire una nuova scheda terminale sul percorso del progetto ed eseguire il seguente comando:

celery -A djangocelery worker -l info

Il risultato è qualcosa del genere:

sedano operaio informazioni

quindi eseguire Django progetto di aprire il http://127.0.0.1:8000/celerytask/ poi, dopo pochi secondi, Se è possibile controllare il Sedano Processo di lavoro di nuovo, siamo in grado di vedere completata l’esecuzione, prima finito di caricare la pagina e inviare compiti di sedano, poi il sedano ricevuto compiti:

Received Tasks

After 30seconds tasks functions done and return successful strings :

Attività Done

Monitoraggio Sedano Lavoratori

C’è un utile strumento web-based chiamato Fiore che può essere utilizzato per il monitoraggio e la gestione di Sedano cluster, Fiore fornisce statistiche dettagliate di avanzamento delle attività e la storia, Si mostra anche i dettagli dell’attività, quali gli argomenti passati, ora di inizio, durata e altri.

installazione Fiore

pip install flower

una Volta installato, è necessario aprire una nuova riga di comando nella directory del progetto ed eseguire questo comando :

celery -A djangocelery worker -l info

aprire una nuova riga di comando in un progetto di percorso e di eseguire questo comando :

celery -A djangocelery flower

fiore di connessione

I dettagli possono quindi visto visitando http://localhost:5555/dashboard nel browser come :

flower dashboard

flower tasks

flower task dettagli

Inoltre:

È possibile eliminare tutte le attività in sospeso con:

celery -A proj purge

Il gioco è fatto. Fatto.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.