Celery jest implementacją kolejki zadań dla aplikacji internetowych Pythona używanych do asynchronicznego wykonywania pracy poza cyklem żądanie-odpowiedź HTTP.
Dlaczego Celery jest przydatny?
Kolejki zadań, a w szczególności implementacja Celery, są jedną z trudniejszych do zrozumienia części stosu aplikacji internetowych Pythona.
Jeśli jesteś młodszym programistą, może być niejasne, dlaczego poruszanie się poza cyklem żądanie-odpowiedź HTTP jest ważne. W skrócie, chcesz, aby twój serwer WSGI odpowiadał na przychodzące żądania tak szybko, jak to możliwe, ponieważ każde żądanie wiąże proces robotniczy aż do zakończenia odpowiedzi. Przeniesienie pracy z tych robotów poprzez uruchamianie asynchronicznych zadań jako zadań w kolejce jest prostym sposobem na poprawienie czasu odpowiedzi serwera WSGI.
Jaka jest różnica między Celeryd a Celerybeat?
Celery może być używany do uruchamiania zadań wsadowych w tle według stałego harmonogramu. Kluczową koncepcją w Celery jest różnica między demonem Celeryd, który wykonuje zadania, a Celerybeat, który jestchedulerem. Pomyśl o Celeryd jako o zestawie jednego lub więcej robotników, którzy wykonują zadania, jakie przed nimi postawisz. Każdy robotnik będzie wykonywał zadanie, a gdy zadanie zostanie zakończone, przejmie następne.cykl będzie się powtarzał bez przerwy, czekając tylko bezczynnie, gdy nie będzie już żadnych zadań do wykonania.
Celerybeat z drugiej strony jest jak szef, który śledzi, kiedy zadania powinny być wykonywane. Twoja aplikacja może powiedzieć Celerybeat, aby wykonać zadanie w odstępach czasu, takich jak co 5 sekund lub raz w tygodniu. Celerybeat może być również poinstruowany, aby uruchamiał zadania w określonym dniu lub czasie, np. o 17:03 w każdą niedzielę. Kiedy interwał lub określony czas zostanie osiągnięty, Celerybeat przekaże zadanie do Celeryd do wykonania na następnym dostępnym pracowniku.
Tutoriale i porady
Celery jest potężnym narzędziem, które może być trudne do okiełznania na początku. Pamiętaj, aby zapoznać się z koncepcją kolejki zadań, a następnie zanurzyć się w tych konkretnych samouczkach Celery.
-
A 4 Minute Intro to Celery to krótki wstępny screencast kolejki zadań.
-
Seria wpisów na blogu na temat architektury Celery, Celery in the wild: tips and tricks to run async tasks in the real world anddealing with resource-consuming tasks on Celeryprovide great context for how Celery works and how to handle some of thetrickier bits to working with the task queue.
-
Jak używać Celery z RabbitMQ jest szczegółowym przewodnikiem do używania tych narzędzi na Ubuntu VPS.
-
Celery – Best Practiceswyjaśnia rzeczy, których nie należy robić z Celery i pokazuje niektóre niewykorzystane funkcje ułatwiające pracę z kolejkami zadań.
-
Celery Best Practices jest kontynuacją powyższego postu o najlepszych praktykach, która opiera się na niektórych z jego własnych doświadczeń z ponad 3 lat używania Celery.
-
Common Issues Using Celery (And Other Task Queues)zawiera dobre rady na temat błędów, których należy unikać w konfiguracji zadań, takich jak użycie transakcji bazodanowych i ponowne próbowanie nieudanych zadań.
-
Asynchronous Processing in Web Applications Part One and Part Two to świetne lektury pozwalające zrozumieć różnicę między kolejką zadań a tym, dlaczego nie powinieneś używać swojej bazy danych jako takiej kolejki.
-
My Experiences With A Long-Running Celery-Based Microprocessgives podaje kilka dobrych wskazówek i porad opartych na doświadczeniach z robotnikami Celery, którym długo zajmuje ukończenie swoich zadań.
-
Lista kontrolna do tworzenia wspaniałych zadań async Celery to strona zaprojektowana specjalnie po to, aby dać ci listę dobrych praktyk do naśladowania podczas projektowania konfiguracji kolejki zadań i wdrażania do środowisk rozwojowych, etapowych i produkcyjnych.
-
Heroku pisze o tym, jak zabezpieczyć Celery, gdy zadania są w inny sposób wysyłane przez niezaszyfrowane sieci.
-
Testowanie jednostkowe zadań Celery wyjaśnia trzy strategie testowania kodu wewnątrz funkcji wykonywanych przez Celery. Post kończy się konkluzją, że synchroniczne wywoływanie zadań Celery w celu ich przetestowania jest najlepszą strategią bez żadnych minusów. Należy jednak pamiętać, że każda metoda testowania, która nie jest identyczna z tym, jak dana funkcja będzie wykonywana w środowisku produkcyjnym, może potencjalnie prowadzić do przeoczenia błędów. Thereis also an open source Git repository with all of the source codefrom the post.
-
Rollbar monitoring of Celery in a Django appexplains how to use Rollbar to monitor tasks. Superużyteczne, gdy pracownicy niezmiennie umierają bez wyraźnego powodu.
-
3 Gotchas for Working with Celeryare rzeczy, o których należy pamiętać, gdy jesteś nowy w implementacji kolejki zadań Celery.
-
Dask i Celery porównuje Dask.distributed z Celery dla projektów Pythona. Post podaje przykłady kodu, aby pokazać, jak wykonywać zadania z obu kolejek zadań.
-
Python+Celery: Chaining jobs? wyjaśnia, że zadania Celery powinny być zależne od siebie nawzajem za pomocą łańcuchówCelery, a nie bezpośrednich zależności między zadaniami.
Celery z frameworkami webowymi
Celery jest zwykle używany z frameworkami webowymi, takimi jakDjango, Flask lub Pyramid.Te zasoby pokazują, jak zintegrować kolejkę zadań Celery z wybranym frameworkiem webowym.
-
How to Use Celery and RabbitMQ with Djangois świetny tutorial, który pokazuje, jak zarówno zainstalować, jak i skonfigurować basictask z Django.
-
Miguel Grinberg napisał fajny post o użyciu kolejki zadań Celery z Flaskiem. Daje on przegląd Celery, po którym następuje konkretny kod do skonfigurowania kolejki zadań i zintegrowania jej z Flaskiem.
-
Setting up an asynchronous task queue for Django using Celery and Redisis prosty tutorial do ustawienia kolejki zadań Celery dla aplikacji internetowych Django używając brokera Redis na back-end.
-
A Guide to Sending Scheduled Reports Via Email Using Django And Celeryshowshows how to usedjango-celeryin your application. Zauważ jednak, że istnieją inne sposoby integracjiCelery z Django, które nie wymagają zależności django-celery.
-
Flask asynchroniczne zadania w tle z Celery i Rediskombinuje Celery z Redis jako brokerem iFlask jako framework przykładowej aplikacji.
-
Celery i Django i Docker: Oh My!pokazuje, jak tworzyć zadania Celery dla Django w kontenerze Docker. Pokazuje również, jak zintegrować Celery z Django i tworzyć zadania okresowe.
-
Getting Started Scheduling Tasks with Celery to szczegółowy przewodnik po konfiguracji Celery z Django (chociaż Celery może być również używany bez problemu z innymi frameworkami).
-
Wprowadzenie do Celery dla Pythona+Djangozapewnia wprowadzenie do kolejki zadań Celery z Django jako zamierzonym frameworkiem do budowy aplikacji internetowej.
-
Zadania asynchroniczne z Falconem i Celerykonfiguruje Celery z frameworkiem Falcon, który jest rzadziej używany w samouczkach internetowych.
-
Custom Celery task states to zaawansowany post o tworzeniu własnych stanów, co jest szczególnie przydatne w przypadku przejściowych stanów w aplikacji, które nie są objęte domyślną konfiguracją Celery.
-
Asynchronous Tasks with Django and Celerylooks at how to configure Celery to handle long-running tasks in aDjango app.
Zasoby wdrożeniowe Celery
Celery i jego broker działają oddzielnie od serwerów WWW i WSGI, więc dodaje to trochę dodatkowej złożoności do twoich wdrożeń. Poniższe zasoby przeprowadzą Cię przez to, jak radzić sobie z wdrożeniami i uzyskać odpowiednie ustawienia konfiguracyjne.
-
Seria „Django in Production” autorstwaRoba Goldinga zawiera post poświęcony w szczególności zadaniom w tle.
-
How to run celery as a daemon? to krótki post z minimalnym kodem do uruchomienia demona Celery i Celerybeat jako usług systemowych w systemie Linux.
-
Celery in Production na blogu Caktus Group zawiera dobre praktyki z ich doświadczenia w używaniu Celery z RabbitMQ, narzędziami monitorującymi i innymi aspektami, które nie są często omawiane w istniejącej dokumentacji.
-
Trzy szybkie wskazówki z dwóch lat z Celery dostarcza kilka solidnych porad na temat opóźnień retry, flagi
-Ofair
i globalnych limitów czasu zadań dla Celery.
.