selleri og kanin i Django og overvågning med blomst, bare et par trin for at få Async til at arbejde

i min 6 års kodningserfaring er Django uden tvivl den bedste ramme, jeg nogensinde har arbejdet med. Til tider vil vi bygge et simpelt Django-program til at køre async-opgaver i baggrunden ved hjælp af selleri og kanin.

Python 3.6.8, Kaninkv 3.6.10

Django==2.2.3 , blomst==0.9.3 , selleri==4.3.0

installer Kaninkv:

apt-get install rabbitmq-server

Kaninkv-tjenesten starter automatisk ved installationen. Du kan manuelt starte serveren ved at køre følgende kommando på kommandolinjen.

rabbitmq-server

efter installation skal du installere python og relateret pakke med pip-kommando som:

pip install Django
pip install celery

derefter skal du oprette et Django-projekt med en simpel app, vi opretter djangocelery-projekt med app l, du kan klone djangocelery-projektet på min GitHub.

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

det første trin skal du tilføje celery_broker_url-konfigurationen til settings.py fil:

indstillinger.py

CELERY_BROKER_URL = ‘amqp://localhost’

Tilføj selleri til dit Django-projekt

Opret en fil med navnet celery.py ved siden af din `settings.py ‘file,

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

denne fil indeholder selleri-konfigurationen til vores projekt, tilføj følgende kode til `celery.py ‘ file:

koden ovenfor opretter en forekomst af vores projekt, den sidste linje instruerer selleri til automatisk at opdage alle asynkrone opgaver for alle de applikationer, der er anført under `INSTALLED_APPS`.selleri vil se efter definitioner af asynkrone opgaver i en fil med navnet `tasks.py ‘ fil i hver af applikationsmapperne.

Rediger __init__.py

nu Rediger __init__.py fil i projektets rod med denne sti:

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

åbn den og kopier nedenstående kode til filen og gem den.

Dette vil sikre, at vores selleri app er vigtig hver gang Django starter.

oprettelse af første selleri opgave

Vi kan oprette en fil med navnet opgaver.Py inde i en Django-app og læg alle vores selleri-opgaver i denne fil, selleri-appen, vi oprettede i project root, samler alle opgaver defineret på tværs af alle Django-apps, der er anført i Installed_appskonfiguration.

app/tasks.py

app/views.py

i stedet for at kalde celery_task direkte, kalder jeg celery_task.forsinkelse(), på denne måde instruerer vi selleri til at udføre denne funktion i baggrunden, så fortsætter Django med at behandle min visning celery_visning og vender glat tilbage til brugeren

djangocelery/urls.py

men inden du prøver det, skal du kontrollere det næste afsnit for at lære, hvordan du starter selleri-arbejdsprocessen.

start arbejdsprocessen

Åbn en ny terminalfane på projektstien, og kør følgende kommando:

celery -A djangocelery worker -l info

resultatet er noget som dette:

selleri arbejdstager information

kør derefter Django-projektet åbn http://127.0.0.1:8000/celerytask/ så efter et par sekunder, hvis vi kontrollerer selleriarbejderprocessen igen, kan vi se, at den afsluttede udførelsen, første indlæsningsside færdig og send opgaver til selleri, så selleri modtog opgaver:

Received Tasks

After 30seconds tasks functions done and return successful strings :

opgaver udført

overvågning af selleriarbejdere

Der er et praktisk internetbaseret værktøj kaldet blomst, som kan bruges til overvågning og administration af selleriklynger, blomst giver detaljerede statistikker over opgavefremskridt og historie, det viser også andre opgavedetaljer såsom argumenterne bestået, starttid, runtime og andre.

installer blomst

pip install flower

Når du er installeret, skal du åbne en ny kommandolinje i projektmappen og køre denne kommando :

celery -A djangocelery worker -l info

åbn derefter en ny kommandolinje i projektstien og kør denne kommando :

celery -A djangocelery flower

blomsterforbindelse

detaljerne kan derefter ses ved at besøge http://localhost:5555/dashboard i din bro. ser som :

flower dashboard

flower tasks

flower task detaljer

derudover :

Du kan slette alle ventende opgaver med :

celery -A proj purge

det er det. Gjort.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.