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:
After 30seconds tasks functions done and return successful strings :
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 :
dodatkowo:
wszystkie oczekujące zadania Można usunąć za pomocą:
celery -A proj purge
To wszystko. Załatwione.