Selleri og Rabbitmq I Django Og Overvåking Med Blomst, Bare Noen Få Skritt for å Få Async Til å Jobbe

I min 6 års kodingserfaring er Django uten tvil Det beste rammeverket jeg noensinne har jobbet med. Til tider vil vi bygge en enkel Django program for å kjøre async oppgaver i bakgrunnen ved Hjelp Av Selleri og RabbitMQ.

Python 3.6.8, RabbitMQ 3.6.10

Django==2.2.3, flower= = 0.9.3, selleri= = 4.3.0

installer RabbitMQ:

apt-get install rabbitmq-server

RabbitMQ-tjenesten starter automatisk ved installasjon. Du kan starte serveren manuelt ved å kjøre følgende kommando på kommandolinjen.

rabbitmq-server

Etter RabbitMQ installasjon, må du installere python og relatert pakke med pip kommando som:

pip install Django
pip install celery

deretter må du opprette En Django prosjekt med en enkel app, skaper vi djangocelery prosjekt med app l, kan du klone djangocelery prosjektet 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 trinnet du må legge TIL CELERY_BROKER_URL-konfigurasjonen til settings.py fil:

innstillinger.py

CELERY_BROKER_URL = ‘amqp://localhost’

Legg Selleri Til Django-Prosjektet

Lag en fil med navnet celery.py i tilknytning til din settings.py ‘file,

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

denne filen vil inneholde selleri-konfigurasjonen for prosjektet Vårt, Legg til følgende kode i `celery.py ‘ file :

koden ovenfor oppretter en forekomst av prosjektet vårt.

Selleri vil se etter definisjoner av asynkrone oppgaver i en fil som heter `tasks.py ‘ fil i hver av programkatalogene.

Rediger __init__.py

rediger nå __init__.py fil i prosjektroten med denne banen :

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

åpne den og kopier under kode inn i filen og lagre det.

Dette vil sørge For At Vår Selleri app er viktig hver gang Django starter.

Opprette Første Selleri Oppgave

Vi kan lage en fil som heter oppgaver.Py inne I En Django app og sette alle Våre Selleri oppgaver i denne filen, Vil Selleri app vi opprettet i prosjektet root samle alle oppgaver definert på tvers Av Alle Django apps oppført I INSTALLED_APPSconfiguration.

app/tasks.py

app/views.py

i Stedet for å ringe celery_task direkte, ringer jeg celery_task.Delay(), på denne måten instruerer Vi Selleri å utføre denne funksjonen i bakgrunnen, Og Django fortsetter å behandle visningen min celery_view og returnerer jevnt til brukeren djangocelery/urls.py

men før du prøver det, sjekk neste avsnitt for å lære hvordan Du starter Selleriarbeiderprosessen.

Starte Arbeidsprosessen

Åpne en ny terminal-fane på prosjektbanen, og kjør følgende kommando:

celery -A djangocelery worker -l info

resultatet er noe slikt:

/ figcaption>

kjør deretter django-prosjektet åpne http://127.0.0.1:8000/celerytask/ så etter noen sekunder, hvis vi sjekker selleriarbeiderprosessen igjen, kan vi se det fullført utførelsen, første lasteside ferdig og send oppgaver til selleri da selleri mottok oppgaver:

Received Tasks

After 30seconds tasks functions done and return successful strings :

Oppgaver Utførtfigcaption>

overvåking selleri arbeidere

det er en hendig web-basert verktøy kalt flower som kan brukes for å overvåke og administrere selleri klynger, flower gir detaljert statistikk over oppgaven fremgang og historie, det viser også andre oppgave detaljer som argumentene gått, starttid, runtime, og andre.

installer Flower

pip install flower

når du er installert, må du åpne en ny kommandolinje i prosjektkatalogen og kjøre denne kommandoen :

celery -A djangocelery worker -l info

åpne deretter en ny kommandolinje i prosjektbanen og kjør denne kommandoen :

celery -A djangocelery flower

figcaption >

detaljene kan da vises ved å besøke http://localhost:5555/dashboard i nettleseren din som :

flower dashboard

flower tasks

flower task detaljer

I tillegg:

du kan slette alle ventende oppgaver med:

celery -A proj purge

Det er det. Gjøre.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.