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: