selleri och Rabbitmq i Django och övervakning med Flower, bara några steg för att få Async att fungera

i min 6 års kodningserfarenhet är Django utan tvekan det bästa ramverket jag någonsin har arbetat med. Ibland kommer vi att bygga en enkel Django-applikation för att köra async-uppgifter i bakgrunden med selleri och RabbitMQ.

Python 3.6.8, RabbitMQ 3.6.10

Django==2.2.3 , blomma==0.9.3 , selleri==4.3.0

installera RabbitMQ:

apt-get install rabbitmq-server

RabbitMQ-tjänsten startar automatiskt vid installationen. Du kan starta servern manuellt genom att köra följande kommando på kommandoraden.

rabbitmq-server

Efter RabbitMQ-installationen måste du installera python och relaterat paket med pip-kommando som:

pip install Django
pip install celery

då måste du skapa ett Django-projekt med en enkel app, vi skapar djangocelery-projekt med app l, du kan klona 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örsta steget måste du lägga till CELERY_BROKER_URL-konfigurationen till settings.py fil:

inställningar.py

CELERY_BROKER_URL = ‘amqp://localhost’

Lägg selleri till din Django projekt

skapa en fil med namnet celery.py intill din `settings.py ’file,

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

den här filen innehåller selleri-konfigurationen för vårt projekt, Lägg till följande kod till `celery.py ’ file:

koden ovan skapar en instans av vårt projekt, den sista raden instruerar selleri att automatiskt upptäcka alla asynkrona uppgifter för alla applikationer som anges under `INSTALLED_APPS`.

selleri kommer att leta efter definitioner av asynkrona uppgifter i en fil med namnet `tasks.py ’ fil i var och en av programkatalogerna.

redigera __init__.py

nu redigera __init__.py fil i projektroten med den här sökvägen:

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

öppna den och kopiera under koden till filen och spara den.

detta kommer att se till att vår selleri app är viktig varje gång Django startar.

Skapa första selleri uppgift

Vi kan skapa en fil med namnet uppgifter.py inuti en Django app och sätta alla våra selleri uppgifter i den här filen, selleri app vi skapade i projektet root kommer att samla alla uppgifter som definieras i alla Django program som anges i INSTALLED_APPSconfiguration.

app/tasks.py

app/views.py

istället för att ringa celery_task direkt, ringer jag celery_task.delay (), på detta sätt instruerar vi selleri att utföra denna funktion i bakgrunden och Django fortsätter att bearbeta Min vy celery_view och återgår smidigt till användaren

djangocelery/urls.py

men innan du försöker, Kolla nästa avsnitt för att lära dig hur du startar Selleriarbetarprocessen.

starta arbetsprocessen

öppna en ny terminalflik på projektvägen och kör följande kommando:

celery -A djangocelery worker -l info

resultatet är ungefär så här:

selleriarbetarinformation

kör sedan Django-projektet öppna http://127.0.0.1:8000/celerytask/ sedan efter några sekunder, om vi kontrollerar selleriarbetarprocessen igen, kan vi se att den slutförde körningen, först ladda sidan färdig och skicka uppgifter till selleri sedan selleri mottagna uppgifter:

Received Tasks

After 30seconds tasks functions done and return successful strings :

uppgifter gjorda

övervakning selleri arbetare

det finns en praktisk webbaserat verktyg som kallas Flower som kan användas för övervakning och administrera selleri kluster, Flower ger detaljerad statistik över uppgiften framsteg och historia, det visar också andra uppgifter som argument passerade, starttid, runtime, och andra.

installera Flower

pip install flower

När du har installerat måste du öppna en ny kommandorad i projektkatalogen och köra det här kommandot :

celery -A djangocelery worker -l info

Öppna sedan en ny kommandorad i projektvägen och kör det här kommandot :

celery -A djangocelery flower
Flower connection

detaljerna kan sedan ses genom att besöka http://localhost:5555/dashboard I din webbläsare som :

flower dashboard

flower tasks

flower task detaljer

dessutom :

Du kan ta bort alla väntande uppgifter med :

celery -A proj purge

det är det. Färdig.

Lämna ett svar

Din e-postadress kommer inte publiceras.