țelină și Rabbitmq în Django și monitorizarea cu flori, doar câțiva pași pentru a obține asincron de lucru

în cei 6 ani de experiență de codificare, fără îndoială, Django este cel mai bun cadru am lucrat vreodată cu. Uneori vom construi o aplicație simplă Django pentru a rula sarcini asincron în fundal folosind telina și RabbitMQ.

Python 3.6.8, RabbitMQ 3.6.10

Django==2.2.3 , floare==0.9.3 , telina==4.3.0

instalați RabbitMQ:

apt-get install rabbitmq-server

serviciul RabbitMQ pornește automat la instalare. Puteți porni manual serverul executând următoarea comandă pe linia de comandă.

rabbitmq-server

după instalarea RabbitMQ, trebuie să instalați python și pachetul aferent cu comanda pip precum:

pip install Django
pip install celery

apoi, trebuie să creați un proiect Django cu o aplicație simplă, creăm proiectul djangocelery cu aplicația l, puteți clona proiectul djangocelery pe GitHub-ul meu.

Djangocelery project

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

primul pas trebuie să adăugați configurația CELERY_BROKER_URL la settings.py fișier:

Setări.py

CELERY_BROKER_URL = ‘amqp://localhost’

adauga telina la proiectul Django

creați un fișier numit celery.py alături de dumneavoastră `settings.py ‘fișier,

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

acest fișier va conține configurația de țelină pentru proiectul nostru, adăugați următorul cod la `celery.py ‘ file:

codul de mai sus creează o instanță a proiectului nostru, ultima linie instruiește telina să descopere automat toate sarcinile asincrone pentru toate aplicațiile enumerate în „INSTALLED_APPS”.

telina va căuta definiții ale sarcinilor asincrone într-un fișier numit `tasks.py ‘ fișier în fiecare dintre directoarele de aplicații.

editează __init__.py

acum editează __init__.py fișier în rădăcina proiectului cu această cale:

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

deschideți-l și copiați codul de mai jos în fișier și salvați-l.

Acest lucru se va asigura că aplicația noastră de țelină este importantă de fiecare dată când începe Django.

crearea primei sarcini telina

putem crea un fișier numit SARCINI.py în interiorul unei aplicații Django și a pus toate sarcinile noastre telina în acest fișier, aplicația telina am creat în rădăcina proiectului va colecta toate sarcinile definite în toate aplicațiile Django enumerate în INSTALLED_APPSconfiguration.

app/tasks.py

app/views.py

în loc de a apela celery_task direct, sun celery_task.întârziere (), în acest fel suntem instruirea telina pentru a executa această funcție în fundal, apoi Django continua procesarea punctul meu de vedere celery_view și se întoarce fără probleme la utilizator

djangocelery/urls.py

dar înainte de a încerca, verificați secțiunea următoare pentru a afla cum să începeți procesul de lucrător de țelină.

pornirea procesului de lucru

deschideți o nouă filă terminal pe calea proiectului și executați următoarea comandă:

celery -A djangocelery worker -l info

rezultatul este ceva de genul acesta:

telina informații lucrător

apoi rulați proiectul Django deschideți http://127.0.0.1:8000/celerytask/ apoi, după câteva secunde, dacă verificăm din nou procesul lucrătorului de țelină, îl putem vedea finalizat execuția, prima pagină de încărcare terminată și trimite sarcini către telina, apoi telina a primit sarcini:

Received Tasks

After 30seconds tasks functions done and return successful strings :

sarcini efectuate

monitorizarea lucrătorilor de țelină

există un instrument la îndemână bazat pe web numit flower, care poate fi utilizat pentru monitorizarea și administrarea clusterelor de țelină, Flower oferă statistici detaliate despre progresul și istoricul sarcinilor, arată și alte detalii despre sarcini, cum ar fi argumentele transmise, ora de începere, timpul de rulare și altele.

install Flower

pip install flower

Odată instalat, trebuie să deschideți o nouă linie de comandă în directorul de proiect și rulați această comandă :

celery -A djangocelery worker -l info

apoi deschideți o nouă linie de comandă în calea proiectului și executați această comandă :

celery -A djangocelery flower

conexiune de flori

detaliile pot fi apoi vizualizate vizitând http://localhost:5555/dashboard în browserul dvs. ca :

flower dashboard

flower tasks

flower task detalii

în plus:

puteți șterge toate sarcinile în așteptare cu:

celery -A proj purge

asta este. Făcut.

Lasă un răspuns

Adresa ta de email nu va fi publicată.