selery i Rabbitmq w Django i monitorowanie Z Flower, tylko kilka kroków, aby uruchomić Async

w moim 6-letnim doświadczeniu w kodowaniu, bez wątpienia Django jest najlepszym frameworkiem, z którym kiedykolwiek pracowałem. Czasami będziemy budować prostą aplikację Django do uruchamiania zadań asynchronicznych w tle za pomocą selera i RabbitMQ.

Python 3.6.8, RabbitMQ 3.6.10

Django==2.2.3 , flower==0.9.3 , selery==4.3.0

zainstaluj RabbitMQ:

apt-get install rabbitmq-server

usługa RabbitMQ uruchamia się automatycznie po instalacji. Możesz ręcznie uruchomić serwer, uruchamiając następujące polecenie w wierszu poleceń.

rabbitmq-server

Po instalacji RabbitMQ musisz zainstalować Pythona i powiązany pakiet za pomocą polecenia pip, takiego jak:

pip install Django
pip install celery

następnie musisz utworzyć projekt Django za pomocą prostej aplikacji, tworzymy projekt djangocelery za pomocą aplikacji l, możesz sklonować projekt djangocelery na moim Githubie.

projekt Djangocelery

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

w pierwszym kroku należy dodać konfigurację SELERY_BROKER_URL do settings.py plik:

ustawienia.py

CELERY_BROKER_URL = ‘amqp://localhost’

Dodaj selera do swojego projektu Django

Utwórz plik o nazwie celery.py przylegające do twojego „settings.py’ plik,

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

ten plik będzie zawierał konfigurację selera dla naszego projektu, Dodaj następujący kod do ’ celery.py `file :

powyższy kod tworzy instancję naszego projektu, Ostatnia linia poleca celery automatyczne wykrywanie wszystkich zadań asynchronicznych dla wszystkich aplikacji wymienionych w`INSTALLED_APPS’.

selery szuka definicji zadań asynchronicznych w pliku o nazwie „tasks.py’ plik w każdym z katalogów aplikacji.

Edytuj __init__.py

teraz edytuj __init__.py plik w katalogu głównym projektu ze ścieżką:

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

otwórz go i skopiuj poniższy kod do pliku i zapisz go.

dzięki temu nasza aplikacja selera będzie ważna za każdym razem, gdy Django zacznie działać.

Tworzenie pierwszego zadania selera

możemy utworzyć plik o nazwie zadania.py wewnątrz aplikacji Django i umieść wszystkie nasze zadania selera w tym Pliku, aplikacja selera, którą stworzyliśmy w korzeniu projektu, zbierze wszystkie zadania zdefiniowane we wszystkich aplikacjach Django wymienionych w konfiguracji INSTALLED_APPSconfiguration.

app/tasks.py

app/views.py

zamiast wywoływać celery_task bezpośrednio, wywołuję celery_task.delay (), w ten sposób instruujemy Celery ’ ego, aby wykonał tę funkcję w tle, a następnie Django przetwarza mój widok celery_view i zwraca płynnie do użytkownika

djangocelery/urls.py

ale zanim spróbujesz, sprawdź następną sekcję, aby dowiedzieć się, jak rozpocząć proces selera.

uruchamianie procesu roboczego

Otwórz nową kartę terminal na ścieżce projektu i uruchom następujące polecenie:

celery -A djangocelery worker -l info

wynik jest mniej więcej taki:

następnie uruchom projekt Django otwórz http://127.0.0.1:8000/celerytask/następnie po kilku sekundach, jeśli ponownie sprawdzimy proces selery worker, zobaczymy, że zakończył wykonywanie, najpierw załaduj stronę i wyślij zadania do selery, a następnie selery otrzymał zadania:

Received Tasks

After 30seconds tasks functions done and return successful strings :

zadania wykonane

monitorowanie pracowników selera

istnieje przydatne narzędzie internetowe o nazwie Flower, które może być używane do monitorowania i administrowania klastrami selera, flower zapewnia szczegółowe statystyki postępu i historii zadań, pokazuje również inne szczegóły zadania, takie jak przekazane argumenty, czas rozpoczęcia, czas wykonania i inne.

zainstaluj Flower

pip install flower

Po zainstalowaniu musisz otworzyć nowy wiersz poleceń w katalogu projektu i uruchomić to polecenie :

celery -A djangocelery worker -l info

następnie otwórz nowy wiersz poleceń w ścieżce projektu i uruchom to polecenie :

celery -A djangocelery flower

szczegóły można następnie wyświetlić, odwiedzająchttp://localhost:5555/dashboardw przeglądarce, jak :

flower dashboard

flower tasks

flower task szczegóły

dodatkowo:

wszystkie oczekujące zadania Można usunąć za pomocą:

celery -A proj purge

To wszystko. Załatwione.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.