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:
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:
After 30seconds tasks functions done and return successful strings :
ö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
detaljerna kan sedan ses genom att besöka http://localhost:5555/dashboard I din webbläsare som :
dessutom :
Du kan ta bort alla väntande uppgifter med :
celery -A proj purge
det är det. Färdig.