V mých 6 letech zkušeností s kódováním je Django bezpochyby nejlepší rámec, se kterým jsem kdy pracoval. Občas budeme vytvářet jednoduchou aplikaci Django pro spouštění asynchronních úloh na pozadí pomocí celeru a RabbitMQ.
Python 3.6.8, RabbitMQ 3.6.10
Django==2.2.3 , květina==0.9.3 , celer==4.3.0
instalovat RabbitMQ :
apt-get install rabbitmq-server
RabbitMQ služba se spustí automaticky po instalaci. Server můžete spustit ručně spuštěním následujícího příkazu na příkazovém řádku.
rabbitmq-server
Po RabbitMQ instalaci, musíte nainstalovat python a souvisejících balíček s pip příkaz jako:
pip install Django
pip install celery
Pak, musíte vytvořit Django projekt s jednoduchou aplikaci, jsme se vytvořit djangocelery projekt s app l, můžete naklonovat djangocelery projektu na mé GitHub.
Djangocelery projektu
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
první krok musíte přidat CELERY_BROKER_URL konfiguraci settings.py soubor:
nastavení.py
CELERY_BROKER_URL = ‘amqp://localhost’
Přidat Celer do vašeho Django Projektu
Vytvořte soubor s názvem celery.py na sousedním `settings.py soubor,
|-- djangocelery/| |-- __init__.py| |-- celery.py| |-- settings.py| |-- urls.py| +-- wsgi.py
Tento soubor bude obsahovat celer konfigurace pro náš projekt, Přidejte následující kód `celery.py soubor :
výše uvedený kód vytvoří instanci našeho projektu, poslední řádek pověřuje celer auto-objevte všechny asynchronní úlohy pro všechny aplikace uvedené v sekci `INSTALLED_APPS`.
celer bude hledat definice asynchronních úloh v souboru s názvem `tasks.py ‚ soubor v každém z adresářů aplikací.
Upravit __init__.py
nyní upravovat __init__.py soubor v kořenovém projektu tuto cestu :
|-- djangocelery/| |-- __init__.py
otevřete ji a zkopírujte níže uvedený kód do souboru a uložit.
to zajistí, že naše celerová aplikace je důležitá při každém spuštění Django.
vytvoření první celerové úlohy
můžeme vytvořit soubor s názvem tasks.aplikace celeru, kterou jsme vytvořili v kořenovém adresáři projektu, shromáždí všechny úkoly definované ve všech aplikacích Django uvedených v INSTALLED_APPSconfiguration.
app/tasks.py
app/views.py
Místo volání celery_task přímo, volám celery_task.delay(), Tímto způsobem jsme pokyn, Celer vykonávat tuto funkci v pozadí pak Django udržet zpracování mého názoru celery_view a vrací hladce uživateli
djangocelery/urls.py
Ale předtím, než si to vyzkoušet, podívejte se na následující sekci se dozvíte, jak začít Celer pracovního procesu.
Spuštění pracovního Procesu
Otevřít nový terminál kartu na cestu projektu, a spusťte následující příkaz:
celery -A djangocelery worker -l info
výsledkem je něco jako toto:
pak spustit Django projekt otevřený http://127.0.0.1:8000/celerytask/ pak po několika sekundách, Když se podíváme Celer pracovní Proces znovu, můžeme vidět, že dokončila realizaci, prvním načtení stránky hotové a odeslat úkoly celer pak celer přijaté úkoly:
After 30seconds tasks functions done and return successful strings :
Sledování Celer Pracovníků
k Dispozici je šikovný web-based nástroj s názvem Květ, který může být použit pro monitorování a správě Celer klastrů, Květina poskytuje podrobné statistiky o úkolu, průběhu a historii, ale také ukazuje další podrobnosti úlohy jako argumenty předané, čas zahájení, runtime, a další.
instalovat Květina
pip install flower
Jakmile je nainstalován, otevřete nový příkazový řádek v adresáři projektu a spusťte tento příkaz :
celery -A djangocelery worker -l info
otevřete nový příkazový řádek v cestě projektu a spusťte tento příkaz :
celery -A djangocelery flower
podrobnosti pak mohou prohlédnout při návštěvě http://localhost:5555/dashboard ve vašem prohlížeči, jako je :
navíc :
můžete vymazat všechny čekající úlohy s :
celery -A proj purge
to je to. Být.