selderij en Rabbitmq in Django en Monitoring met Flower, slechts enkele stappen om Async werkend te krijgen

in mijn 6 jaar ervaring met programmeren is Django zonder twijfel het beste framework waarmee ik ooit heb gewerkt. Soms zullen we het bouwen van een eenvoudige Django applicatie om async taken uit te voeren op de achtergrond met behulp van selderij en RabbitMQ.

Python 3.6.8, RabbitMQ 3.6.10

Django==2.2.3 , flower==0.9.3 , selderij = = 4.3.0

install RabbitMQ:

apt-get install rabbitmq-server

De RabbitMQ service start automatisch bij de installatie. U kunt de server handmatig starten door de volgende opdracht op de opdrachtregel uit te voeren.

rabbitmq-server

na de RabbitMQ installatie moet je python en gerelateerd pakket installeren met pip commando zoals:

pip install Django
pip install celery

dan moet je een Django project maken met een eenvoudige app, we maken djangocelery project met app l, je kunt het djangocelery project klonen op mijn 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

de eerste stap moet u de CELERY_BROKER_URL configuratie toevoegen aan de settings.py bestand:

instellingen.py

CELERY_BROKER_URL = ‘amqp://localhost’

Voeg Selderij aan uw Django Project

Maak een bestand met de naam celery.py naast je `settings.py` bestand,

|-- djangocelery/| |-- __init__.py| |-- celery.py| |-- settings.py| |-- urls.py| +-- wsgi.py

Dit bestand bevat de selderij configuratie voor ons project, de volgende code Toevoegen aan de `celery.py` bestand :

De bovenstaande code maakt u een exemplaar van ons project, De laatste regel instrueert de selderij om het automatisch ontdekken van alle asynchrone taken voor alle toepassingen vermeld onder `INSTALLED_APPS`.

Selery zoekt naar definities van asynchrone taken in een bestand met de naam `tasks.py ‘ bestand in elk van de applicatiemappen.

Bewerk de __init__.py

nu bewerken __init__.py bestand in de Project root met dit pad:

|-- djangocelery/| |-- __init__.py

open het en kopieer onderstaande code in het bestand en sla dat op.

Dit zorgt ervoor dat onze selderij app belangrijk is elke keer dat Django start.

eerste Selderietaak aanmaken

We kunnen een bestand met de naam taken aanmaken.py in een Django app en zet al onze selderij taken in dit bestand, de selderij app die we gemaakt in het project root zal alle taken gedefinieerd in alle Django apps vermeld in de INSTALLED_APPSconfiguration verzamelen.

app/tasks.py

app/views.py

in plaats van het celery_task direct aan te roepen, roep ik celery_task aan.delay (), op deze manier instrueren we Selery om deze functie op de achtergrond uit te voeren dan blijft Django mijn weergave verwerken celery_view en keert soepel terug naar de gebruiker

djangocelery/urls.py

maar voordat u het probeert, controleer de volgende sectie om te leren hoe u het Selderijwerkproces kunt starten.

het werkproces starten

Open een nieuw terminaltabblad op het projectpad en voer het volgende commando uit:

celery -A djangocelery worker -l info

het resultaat is ongeveer als volgt:

selderij werknemer informatie

voer Django project open de http://127.0.0.1:8000/celerytask/ vervolgens na een paar seconden, Wanneer we de Selderij werkproces weer, kunnen we zien dat voltooid de uitvoering, de eerste lading pagina klaar en sturen taken selderij vervolgens selderij ontvangen taken:

Received Tasks

After 30seconds tasks functions done and return successful strings :

taken uitgevoerd

monitoring selderij workers

Er is een handige web-based tool genaamd flower die kan worden gebruikt voor het bewaken en beheren van selderij clusters, Flower biedt gedetailleerde statistieken van taak voortgang en geschiedenis, het toont ook andere taak details zoals de argumenten doorgegeven, starttijd, runtime, en anderen.

installeren Bloem

pip install flower

als het Eenmaal geïnstalleerd is, moet u het openen van een nieuwe opdracht in de project directory en voer dit commando uit :

celery -A djangocelery worker -l info

open een nieuwe opdracht in de project-pad en voer je dit commando uit :

celery -A djangocelery flower

bloem verbinding

De gegevens kunnen vervolgens worden bekeken door een bezoek http://localhost:5555/dashboard in je browser, zoals :

flower dashboard

flower tasks

flower task details

daarnaast :

u kunt alle lopende taken verwijderen met :

celery -A proj purge

dat is het. Gemaakt.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.