6 éves kódolási tapasztalatom során kétségtelenül a Django a legjobb keretrendszer, amellyel valaha dolgoztam. Időnként egy egyszerű Django alkalmazást fogunk építeni az aszinkron feladatok futtatásához a háttérben a zeller és a RabbitMQ segítségével.
Python 3.6.8, RabbitMQ 3.6.10
Django==2.2.3 , flower==0.9.3 , zeller==4.3.0
RabbitMQ telepítése:
apt-get install rabbitmq-server
a RabbitMQ szolgáltatás automatikusan elindul a telepítéskor. A kiszolgálót manuálisan elindíthatja a következő parancs futtatásával a parancssorban.
rabbitmq-server
a RabbitMQ telepítése után telepítenie kell a python és a kapcsolódó csomagot a pip paranccsal, mint például:
pip install Django
pip install celery
ezután létre kell hoznia egy Django projektet egy egyszerű alkalmazással, djangocelery projektet hozunk létre az app l alkalmazással, klónozhatjuk a djangocelery projektet a GitHub-on.
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
az első lépésben hozzá kell adni a CELERY_BROKER_URL konfigurációt a settings.py fájl:
beállítások.py
CELERY_BROKER_URL = ‘amqp://localhost’
zeller hozzáadása a Django projekthez
Hozzon létre egy nevű fájlt celery.py szomszédos a `settings.py ‘file,
|-- djangocelery/| |-- __init__.py| |-- celery.py| |-- settings.py| |-- urls.py| +-- wsgi.py
Ez a fájl tartalmazza a projektünk zeller konfigurációját, adja hozzá a következő kódot a `celery.py ‘ file:
a fenti kód létrehoz egy példányt a projektünkből, az utolsó sor utasítja a zellert, hogy automatikusan fedezze fel az összes aszinkron feladatot az “INSTALLED_APPS” alatt felsorolt összes alkalmazáshoz.
a zeller megkeresi az aszinkron feladatok definícióit egy ‘nevű fájlban tasks.py’ fájl az egyes alkalmazáskönyvtárakban.
A __szerkesztése init__.py
most edit __init__.py fájl a projekt gyökerében a következő elérési úttal:
|-- djangocelery/| |-- __init__.py
nyissa meg, másolja be a kódot a fájlba, majd mentse el.
Ez biztosítja, hogy a zeller alkalmazásunk minden alkalommal fontos legyen, amikor a Django elindul.
első zeller Feladat létrehozása
létrehozhatunk egy tasks nevű fájlt.py belül Django app, és tegye az összes zeller feladatok ebbe a fájlba, a zeller app hoztunk létre a projekt gyökér összegyűjti az összes meghatározott feladatok az összes Django alkalmazások felsorolt INSTALLED_APPSconfiguration.
app/tasks.py
app/views.py
a celery_task közvetlen hívása helyett a celery_taskot hívom.delay (), így utasítjuk a zellert, hogy hajtsa végre ezt a funkciót a háttérben, majd a Django folytatja a My view celery_view feldolgozását, és simán visszatér a felhasználóhoz
djangocelery/urls.py
de mielőtt kipróbálná, ellenőrizze a következő részt, hogy megtudja, hogyan kell elindítani a zeller munkás folyamatát.
A munkafolyamat elindítása
nyisson meg egy új terminál fület a projekt útvonalán, és futtassa a következő parancsot:
celery -A djangocelery worker -l info
az eredmény valami ilyesmi: