Celery on tehtäväjonototeutus Python-verkkosovelluksille, jota käytetään suorittamaan työtä asynkronisesti HTTP-pyyntö-vastaus-syklin ulkopuolella.
Miksi Celery on hyödyllinen?
Tehtäväjonot ja erityisesti Celery-toteutus ovat yksi Python-verkkosovelluspinon hankalimmista osista ymmärtää.
Juniorikehittäjälle voi olla epäselvää, miksi työn siirtäminen HTTP-pyyntö-vastaus-syklin ulkopuolelle on tärkeää. Lyhyesti sanottuna haluat WSGI-palvelimesi vastaavan saapuviin pyyntöihin mahdollisimman nopeasti, koska jokainen pyyntö sitoo työprosessin, kunnes vastaus on valmis. Työn siirtäminen pois näiltä työntekijöiltä pyörittämällä asynkronisia töitä tehtävinä jonossa on suoraviivainen tapa parantaa WSGI-palvelimen vasteaikoja.
Mitä eroa on Celerydin ja Celerybeatin välillä?
Celeryä voidaan käyttää eräajotöiden suorittamiseen taustalla säännöllisen aikataulun mukaan. Keskeinen käsite Celeryssä on eroCelery daemon (celeryd), joka suorittaa tehtäviä, Celerybeat, joka on ascheduler. Ajattele, että Celeryd on yhden tai useamman työntekijän tunnelinäkymäjoukko, joka hoitaa mitä tahansa tehtäviä, jotka asetat sen eteen. Jokainen työläinen suorittaa tehtävän ja kun tehtävä on suoritettu, hän ottaa seuraavan.Sykli toistuu jatkuvasti ja odottaa vain tyhjäkäynnillä, kun eteensä ei enää tule tehtäviä.
Celerybeat taas on kuin pomo, joka pitää kirjaa siitä, milloin tehtävät pitäisi suorittaa. Sovelluksesi voi käskeä Celerybeatia suorittamaan tehtävän aikavälein, esimerkiksi 5 sekunnin välein tai kerran viikossa. Celerybeat voidaan myös määrätä suorittamaan tehtäviä tiettynä päivänä tai kellonaikana, esimerkiksi kello 17:03 joka sunnuntai. Kun aikaväli tai tietty aika saavutetaan, Celerybeat luovuttaa tehtävän Celerydille suoritettavaksi seuraavalla vapaana olevalla työntekijällä.
Celery-oppaita ja neuvoja
Celery on tehokas työkalu, jota voi olla aluksi vaikea ymmärtää. Muista lukea tehtäväjonon käsitteistäja sukeltaa sitten näihin erityisiin Celery-opetusohjelmiin.
-
A 4 Minute Intro to Celery on lyhyt johdanto tehtäväjonon screencast.
-
Tämä Celeryn arkkitehtuuria käsittelevä blogikirjoitussarja,Celery luonnossa: vinkkejä ja temppuja asynkisten tehtävien suorittamiseen reaalimaailmassaja resursseja kuluttavien tehtävien käsitteleminen Celeryssäantavat loistavaa kontekstia siihen, miten Celery toimii ja miten käsitellä joitakin tehtäväjonon kanssa työskentelyn hankalampia kohtia.
-
How to use Celery with RabbitMQon yksityiskohtainen ohje näiden työkalujen käyttämiseen Ubuntu VPS:ssä.
-
Celery – Parhaat käytännötselittää asioita, joita Celeryn kanssa ei kannata tehdä, ja esittelee joitain alikäytettyjä ominaisuuksia, jotka helpottavat tehtäväjonojen käsittelyä.
-
Celery – Parhaat käytännöton eri kirjoittajan jatko-osa edellä mainitulle parhaat käytännöt -kirjoitukselle, joka perustuu joihinkin hänen omiin oppeihinsa yli kolmen vuoden ajalta Celeryn käytöstä.
-
Common Issues Using Celery (And Other Task Queues)sisältää hyviä neuvoja virheistä, joita kannattaa välttää tehtäväkonfiguraatioissa,kuten tietokantatapahtumien käyttö ja epäonnistuneiden tehtävien uudelleen yrittäminen.
-
Asynkronous Processing in Web Applications Part Oneand Part Twoovat hyvää luettavaa, kun haluat ymmärtää tehtäväjonon eron ja sen, miksi sinun ei kannata käyttää tietokantaa tehtäväjonona.
-
My Experiences With A Long-Running Celery-Based Microprocessssaannetaan hyviä vinkkejä ja neuvoja, jotka pohjautuvat kokemukseen Celery-työpisteistä, joilla kestää kauan suorittaa tehtävänsä.
-
Checklist to build great Celery async taskson sivusto, joka on suunniteltu erityisesti antamaan sinulle lista hyvistä käytännöistä, joita voit noudattaa, kun suunnittelet tehtäväjonon kokoonpanoa ja otat käyttöön kehitys-, staging- ja tuotantoympäristöissä.
-
Heroku kirjoitti siitä, miten Celery voidaan suojata, kun tehtäviä lähetetään muutoin salaamattomien verkkojen kautta.
-
Yksikkötestaaminen Celery-tehtävistäselittää kolme strategiaa koodin testaamiseen Celeryllä suoritettavien funktioiden sisällä. Kirjoituksessa päädytään siihen, että Celery-tehtävien kutsuminen synkronisesti niiden testaamiseksi on paras strategia ilman haittoja. Pidä kuitenkin mielessä, että kaikki testausmenetelmät, jotka eivät vastaa sitä, miten funktio suoritetaan tuotantoympäristössä, voivat mahdollisesti johtaa huomaamattomiin virheisiin. On myös avoimen lähdekoodin Git-tietovarasto, jossa on kaikki lähdekoodit postauksesta.
-
Rollbarin Celeryn monitorointi Django-applikaatiossaselittää, miten Rollbaria käytetään tehtävien monitorointiin. Erittäin hyödyllinen, kun työntekijät poikkeuksetta kuolevat ilman näkyvää syytä.
-
3 Gotchas for Working with Celeryovat asioita, jotka kannattaa pitää mielessä, kun olet uusi Celery-tehtäväjonototeutuksessa.
-
Dask ja Celeryvertailee Dask.distribuutiota ja Celeryä Python-projekteille. Postauksessa annetaankoodiesimerkkejä, jotka osoittavat, miten tehtäviä suoritetaan kummallakin tehtäväjonolla.
-
Python+Celery: Chaining jobs?selittää, että Celery-tehtävien tulisi olla riippuvaisia toisistaan käyttäenCelery-ketjuja, ei suoria riippuvuuksia tehtävien välillä.
Celery web-kehysten kanssa
Celeryä käytetään tyypillisesti web-kehyksen, kutenDjangon, Flaskin tai Pyramidin, kanssa.Näissä resursseissa näytetään, miten Celery-tehtäväjono integroidaan valitsemasi web-kehyksen kanssa.
-
How to Use Celery and RabbitMQ with Djangois loistava opetusohjelma, jossa näytetään, miten sekä asennetaan että asetetaan perustehtävä Djangon kanssa.
-
Miguel Grinberg kirjoitti hienon postauksen tehtäväjono Celeryn käyttämisestä Flaskin kanssa.Hän antaa yleiskatsauksen Celeryyn ja sen jälkeen konkreettista koodia tehtäväjonon asentamiseksi ja sen integroimiseksi Flaskiin.
-
Setting up an asynchronous task queue for Django using Celery and Redisis suoraviivainen opetusohjelma Celery-tehtäväjonon määrittämiseksiDjango-verkkosovelluksiin käyttäen Redis-välittäjää back endissä.
-
A Guide to Sending Scheduled Reports Via Email Using Django And Celeryshows you how to usedjango-celeryin your application. Huomaa kuitenkin, että on olemassa muitakin tapoja integroidaCelery Djangoon, jotka eivät vaadi django-celery-riippuvuutta.
-
Flask asynkroniset taustatehtävät Celeryn ja Rediscin kanssa Yhdistää Celeryn Rediksen kanssa välittäjänä jaFlaskin kanssa esimerkkisovelluksen kehykseksi.
-
Celery ja Django ja Docker: Oh My!näyttää, miten luoda Celery-tehtäviä Djangolle Dockercontainerin sisällä. Se tarjoaa myös joitain
-
Asynkroniset tehtävät Djangon ja Celeryn avullaesittää, miten Celery integroidaan Djangoon ja luodaan jaksoittaisia tehtäviä.
-
Getting Started Scheduling Tasks with Celeryon yksityiskohtainen läpikäynti Celeryn asentamiseen Djangon kanssa (tosinCeleryä voi käyttää ongelmitta myös muiden kehysten kanssa).
-
Introducing Celery for Python+Djangon käyttöönotossa tutustutaan Celery-tehtäväjonoon Djangon kanssa.
-
Asynchronous Tasks with Falcon and Celerykonfiguroi Celeryn yhdessä Falcon-kehyksen kanssa, jota ei käytetä niinkään yleisesti verkko-oppaissa.
-
Custom Celery -tehtävien tilat on edistynyt postaus mukautettujen tilojen luomisesta, mikä on erityisen hyödyllistä sovelluksen ohimeneviin tiloihin, joita Celeryn oletuskonfiguraatio ei kata.
-
Asynkroniset tehtävät Djangon ja Celeryn avullaKatsoo, miten Celery konfiguroidaan käsittelemään pitkäkestoisia tehtäviäDjango-sovelluksessa.
Celery-käyttöönottoresurssit
Celery ja sen välittäjä ajetaan erillään verkko- ja WSGI-palvelimistasi, joten se lisää monimutkaisuutta käyttöönottoihisi. Seuraavissa resursseissa käydään läpi, kuinka käsitellä käyttöönottoja ja saada oikeat konfiguraatioasetukset käyttöön.
-
Rob Goldingin kirjoittamassa ”Django in Production” -sarjassa on postaus, joka käsittelee erityisesti taustatehtäviä.
-
How to run celery as a daemon?on lyhyt postaus, jossa on minimaalista koodia Celery-demonin ja Celerybeatin ajamiseen järjestelmäpalveluina Linuxissa.
-
Celery in Productionon the Caktus Groupin blogissa sisältää hyviä käytäntöjä heidän kokemuksistaan Celeryn käytöstä RabbitMQ:n kanssa, monitorointityökaluista ja muista näkökohdista, joita ei useinkaan käsitellä olemassa olevassa dokumentaatiossa.
-
Kolme nopeaa vinkkiä kahdelta vuodelta Celeryn parissa tarjoaa vankkoja vinkkejä uudelleenkäsittelyn viiveistä,
-Ofair
-lipukkeesta ja globaalitehtävien aikakatkaisuista Celeryyn.