Co To jest seler?
Seleryjest rozproszoną kolejką zadań, która upraszcza zarządzanie dystrybucją zadań.Programiści dzielą zbiory danych na mniejsze partie, które seler może przetworzyć w pracy znanej jako praca.
wdrażasz jeden lub więcej procesów roboczych, które łączą się z kolejką komunikatów (broker oparty na anAMQP lub SQS). Klienci przesyłają oferty pracy do brokera wiadomości, a kolejka nasłuchuje wniosków o pracę za pomocącelery. Broker wiadomości następnie rozsyła wnioski o pracę do pracowników.Pracownicy czekają na pracę z selera i wykonują zadania.Po zakończeniu worker wysyła wynik do innej kolejki dla klienta toprocess.
w selerze klienci i pracownicy nie komunikują się ze sobą bezpośrednio, ale poprzez kolejki komunikatów.Klienci wysyłają wiadomości za pomocą zadań w systemie, tak jak zdalna procedura inicjuje funkcję. Klienci nie muszą rozumieć actualformat, ale opisywać funkcje i rejestrować je za pomocą frameworka:
@app.task def send_hello(x, y): return ‘Hello’ # overrides the broker from your configuration app = Celery('app_name', broker='...') app.tasks
korzystając z oficjalnego powiązania Pythona, stworzyliśmy zadanie i zarejestrowaliśmy je w systemie. Możesz użyć metody apply_async(function, args, kwargs,...)
, aby wysłać zadanie do odpowiedniej kolejki. Klient wywołujeget
w przyszłości zwracanej przezapply_async
, aby zablokować i pobrać odpowiedź lub użyć metody state do zainicjowania połączenia do brokera sprawdzającego status żądania.
wiadomość kierowana do kolejki czeka w kolejce,aż ktoś ją zużyje, a wiadomość jest usuwana z kolejki po potwierdzeniu.
wyniki w selerze
możliwe jest śledzenie Stanów zadania. Seler może równieżostore lub wysłać Stany. Tak więc, zamiast używać funkcji get, możliwe jest wysyłanie wyników do innego zaplecza. Istnieje kilka wbudowanych narzędzi do wyboru wyników, w tym qlalchemy, specificdatabasesandRPC (RabbitMQ).
domyślnie seler jest skonfigurowany tak, aby nie zużywał wyników zadań. Ustawienie opcji konfiguracyjnejresult_backend = 'rpc'
nakazuje systemowi wysłanie odpowiedzi do unikalnej kolejki do konsumpcji. Nie zaleca się korzystania z zaplecza ampq. Może to spowodować wyciek pamięci.
Więcej informacji o wynikach można znaleźć tutaj.
co to jest seler?
selery działa poprzez router wiadomości i wzorce publish-subscribe.Wydawcy wysyłają wiadomości do giełdy, która wykorzystuje bezpośrednie lub bezpośrednie dopasowanie karty orwildcard do jednej lub więcej kolejek roboczych w brokerze. Typ exchange określa, w jaki sposób wiadomości są kierowane przez exchange.Konfigurujesz typy wymiany w konfiguracji:
CELERY_QUEUES = { "my_queue”:{ "exchange”: "my_exchange”, "exchange_type”: "topic”, "binding_key”: "all_tasks.task_type” } } CELERY_DEFUALT_EXCHANGE=”my_exchange” CELERY_DEFAULT_EXCHANGE_TYPE=”direct” CELERY_DEFAULT_ROUTING_KEY=”all_tasks”
w tym przykładzie deklarujesz domyślną kolejkę jako jedyną znaną kolejkę z domyślną wymianą, ale nadpisujesz typ do tematu za pomocą klucza routingu.task_type. Wymiana tematyczna pozwala na użycie dopasowania symboli wieloznacznych tak, aby zadania wysłane do all_tasks.* są nadal odbierane. Ta konfiguracja może wystąpić w tym samym module, w którym uruchamiasz aplikację.
rodzaje Giełd
standardowe typy giełd to direct, topic, fanout i headers. Thesedictate jak wiadomości przechodzą do subskrybentów. Klucze routingu muszą pasować dokładnie do wymiany Ina direct. Wymiana Fanout wysyła wiadomości do wszystkich dołączonych kolejek.Tematy pozwalają na dopasowanie symboli wieloznacznych. Wymiana nagłówków przekazuje tylko metadane.
Dowiedz się więcej o kluczach trabbitmq i routingu
kiedy należy używać selera?
jako system kolejkowania zadań, Celery dobrze współpracuje z długimi procesami lub małymi powtarzalnymi zadaniami pracującymi na partiach.Typy problemów są typowymi zadaniami asynchronicznymi. Skalowanie obrazów, kodowanie wideo, ETL, wysyłanie wiadomości e-mail lub inne potoki korzystają z tego wstępnie zbudowanego frameworka obsługującego większość prac związanych z budową.
jakie są korzyści stosowania selera?
selery współpracuje z dowolnym językiem poprzez standaryzowany protokół komunikacyjny.Oprócz oficjalnego wydania Pythona, inne API są w fazie rozwoju dla e.g.Java, RustandNode.Możliwe jest stworzenie scentralizowanego systemu przy użyciu dowolnego języka z API anAMQP lub SQS.
inne korzyści obejmują zminimalizowanie ilości kodu wymaganego do dystrybucji zadań oraz możliwość okresowego planowania zadań przezcelerybeat.Celerybeat jest harmonogramem, który uruchamia zadania w regularnych odstępach czasu.Samodzielny monitoring w czasie rzeczywistym dla pracowników selera jest również dostępny za pośrednictwem celerymon.
dlaczego warto korzystać z brokera wiadomości w chmurze?
jako pośrednik wstępnie zbudowany, Celery upraszcza rozwój i zarządzanie rurociągami.CloudAMQP eliminuje potrzeby administracyjne twojego zaplecza dzięki ready-madeclusters.
„używamy CloudAMQP – RabbitMQ jako brokera do naszych zadań asynchronicznych poprzezcelery. Używamy go jako usługi asynchronicznej opartej na zdarzeniach. CloudAMQP wspiera nasz projekt poprzez odpowiednie monitorowanie i wysoką dostępność oraz kolejki scalablebroker.”Shivam Arora, Delhivery
nie musisz już martwić się o skalowanie systemu, aby sprostać rosnącemu zapotrzebowaniu.Nasze instancje są dostarczane z już uruchomioną konsolą zarządzania.
Konfigurowanie RabbitMQ za pomocą CloudAMQP
cloudamqp zapewnia natychmiastowe instancje RabbitMQ.Utwórz konto i udostępnij instancję bezpośrednio z interfejsu web managementinterface. Wbudowane automatyczne skalowanie pozwala Twoim brokerom szybko pracować.Cloudamqp bazuje wyłącznie na mocy bazowego provisionedinstance, a Ty możesz skalować w górę iw dół między różnymi planami, gdy zajdzie potrzeba. Nasz darmowy poziom, little lemur, jest doskonałą opcją do testowania.
jak używać CloudAMQP jako brokera wiadomości selerowych?
Po aprowizacji twój broker CloudAMQP działa w taki sam sposób, jak Twój system lokalny. Wszystko, czego potrzebujesz, to adres URL, Nazwa użytkownika i hasło, aby nawiązać połączenie z brokerem. Celery zajmuje się resztą:
app = Celery('app_name', broker='amqps://user:password@host:port/host’)print(app.conf.broker_url)
Celery Framework przechowuje adres URL w konfiguracji. Ponieważ seler działa oddzielnie od brokera, zyskujesz taki sam stopień kontroli, jak gdyby cały system działał lokalnie.
Czy mogę uruchomić moich pracowników selera w chmurze?
chociaż CloudAMQP zapewnia brokera wiadomości, możliwe jest również wdrożenie pracowników w AWS lub innej usłudze w chmurze. Pracownicy muszą tylko wiedzieć, gdzie mieszka broker, aby stać się częścią systemu. Celery utrzymuje aqueue dla zdarzeń i powiadomień bez wspólnego węzła rejestru.
dzięki wykorzystaniu brokera do zarządzania systemem, możesz uruchamiać swoje zadania w kontenerach inDocker overKubernetes.Kontenery automatycznie skalują się zgodnie z Twoimi potrzebami, podczas gdy Kubernetes umożliwia definiowanie zasad skalowania, a Flower zapewnia możliwości monitorowania.Oficjalny pojemnik na selery znajduje się tutaj:https://hub.docker.com/_/celery.Celery jest również w pełni obsługiwany na Heroku.
prowadzenie klientów i pracowników selery w chmurze minimalizuje koszty rozwoju i wdrażania rurociągów.
dlaczego CloudAMQP sponsoruje projekt selery
mamy wielu klientów korzystających z aplikacji,które ufają Celery, dlatego aktywnie i co miesiąc wspieramy rozwój projektu selery (AMQP). Daj nam znać, jeśli jest coś w selerach, na czym chciałbyś, abyśmy położyli dodatkowy nacisk.
odwiedź naszą stronę planuaby uzyskać więcej informacji na temat rozpoczęcia wdrażania klastra RabbitMQ.Radzimy również zapoznać się z naszymi zalecanymi ustawieniami selera na CloudAMQP przed rozpoczęciem procesu produkcyjnego, a także docenić ramy produkcji selera.