minun 6 vuoden koodaus kokemus, epäilemättä, Django on paras puitteet olen koskaan työskennellyt. Ajoittain rakennamme yksinkertaisen Django-sovelluksen, jolla voi suorittaa Async-tehtäviä taustalla sellerin ja RabbitMQ: n avulla.
Python 3.6.8, RabbitMQ 3.6.10
Django==2.2.3 , flower==0.9.3 , celery==4.3.0
install RabbitMQ:
apt-get install rabbitmq-server
RabbitMQ-palvelu käynnistyy automaattisesti asennuksen yhteydessä. Voit käynnistää palvelimen manuaalisesti suorittamalla seuraavan komennon komentorivillä.
rabbitmq-server
RabbitMQ-asennuksen jälkeen sinun täytyy asentaa python ja siihen liittyvä paketti pip-komennolla, kuten:
pip install Django
pip install celery
sitten sinun täytyy luoda Django-projekti yksinkertaisella sovelluksella, me luomme djangocelery-projektin app l: llä, voit kloonata djangocelery-projektin minun Githubillani.
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
ensimmäisessä vaiheessa on lisättävä CELERY_BROKER_URL-kokoonpano settings.py tiedosto:
asetukset.py
CELERY_BROKER_URL = ‘amqp://localhost’
lisää selleri Django-projektiin
Luo tiedosto nimeltä celery.py vieressä sinun ”settings.py” file,
|-- djangocelery/| |-- __init__.py| |-- celery.py| |-- settings.py| |-- urls.py| +-- wsgi.py
this file will contain the celery configuration for our project, Add the following code to the ”celery.py” file:
yllä oleva koodi luo instanssin projektistamme, viimeisellä rivillä ohjeistetaan celeriä automaattisesti löytämään kaikki asynkroniset tehtävät kaikille ”INSTALLLED_APPS” -kohdassa luetelluille sovelluksille.
selleri etsii asynkronisten tehtävien määritelmiä tiedostosta nimeltä `tasks.py ” tiedosto jokaisessa sovellushakemistossa.
muokkaa _ _ init__.py
nyt muokkaa __init__.py tiedosto projektin juuressa tällä polulla:
|-- djangocelery/| |-- __init__.py
avaa se ja kopioi alla oleva koodi tiedostoon ja tallenna se.
Tämä varmistaa, että Sellerisovelluksemme on tärkeä aina, kun Django alkaa.
ensimmäisen Selleritehtävän luominen
voimme luoda tiedoston nimeltä tehtävät.py sisällä Django app ja laittaa kaikki selleri tehtäviä tähän tiedostoon, selleri app loimme projektin root kerää kaikki tehtävät määritellään kaikissa Django Sovellukset lueteltu INSTALLED_APPSconfiguration.
app/tasks.py
app/views.py
sen sijaan, että soittaisin suoraan celery_taskille, soitan celery_taskille.delay (), näin ohjeistamme Celeriä suorittamaan tämän toiminnon taustalla sitten Django pitää processing my view celery_view: n ja palaa sujuvasti käyttäjälle
djangocelery/urls.py
mutta ennen kuin kokeilet, katso seuraavasta osiosta, miten Sellerityöprosessi aloitetaan.
työprosessin aloittaminen
avaa projektin polulle Uusi pääteikkuna ja suorita seuraava komento:
celery -A djangocelery worker -l info
tuloksena on jotain tällaista:
suorita sitten Django-projekti avaa http://127.0.0.1:8000/celerytask/ sitten muutaman sekunnin kuluttua, jos tarkistamme selleri työprosessin uudelleen, voimme nähdä sen suorittaneen suorituksen, ensimmäisen lataussivun valmis ja lähettää tehtävät sellerille sitten selleri sai tehtävät:
After 30seconds tasks functions done and return successful strings :
sellerityöntekijöiden seuranta
on kätevä web-pohjainen työkalu nimeltä Flower, jota voidaan käyttää selleriklustereiden seurantaan ja hallinnointiin, Flower tarjoaa yksityiskohtaisia tilastoja tehtävän etenemisestä ja historiasta, se näyttää myös muita tehtävän yksityiskohtia, kuten läpäistyt argumentit, alkamisaika, ajonaika ja muut.
install Flower
pip install flower
asennuksen jälkeen on avattava uusi komentorivi projektihakemistoon ja suoritettava tämä komento :
celery -A djangocelery worker -l info
avaa sitten uusi komentorivi projektipolussa ja suorita tämä komento :
celery -A djangocelery flower
yksityiskohdat voi sitten katsoa käymällähttp://localhost:5555/dashboardselaimessa kuten :
lisäksi:
voit poistaa kaikki vireillä olevat tehtävät:
celery -A proj purge
That ’ s it. Tehdä.