sql >> Databasteknik >  >> NoSQL >> Redis

För- och nackdelar med att använda selleri vs. RQ

Här är vad jag hittade när jag försökte svara på exakt samma fråga. Det är förmodligen inte heltäckande och kan till och med vara felaktigt på vissa punkter.

Kort sagt, RQ är designad för att vara enklare runt om. Selleri är designad för att vara mer robust. De är båda utmärkta.

  • Dokumentation. RQ:s dokumentation är heltäckande utan att vara komplex, och speglar projektets övergripande enkelhet - du känner dig aldrig vilsen eller förvirrad. Selleris dokumentation är också omfattande, men förvänta dig att återbesöka den en hel del när du först sätter upp saker eftersom det finns för många alternativ att internalisera
  • Övervakning. Celery's Flower och RQ-instrumentpanelen är båda mycket enkla att installera och ger dig minst 90 % av all information du någonsin skulle vilja ha

  • Mäklarstöd. Selleri är den klara vinnaren, RQ stöder bara Redis. Detta innebär mindre dokumentation om "vad är en mäklare", men innebär också att du inte kan byta mäklare i framtiden om Redis inte längre fungerar för dig. Till exempel övervägde Instagram både Redis och RabbitMQ med selleri. Detta är viktigt eftersom olika mäklare har olika garantier t.ex. Redis kan inte (i skrivande stund) garanterar 100 % att dina meddelanden levereras.

  • Prioriterade köer. RQs prioritetskömodell är enkel och effektiv - arbetare läser från köerna i ordning. Selleri kräver att man snurrar upp flera arbetare för att konsumera från olika köer. Båda tillvägagångssätten fungerar

  • OS-stöd. Selleri är den klara vinnaren här, eftersom RQ bara körs på system som stöder fork t.ex. Unix-system

  • Språkstöd. RQ stöder bara Python, medan Celery låter dig skicka uppgifter från ett språk till ett annat språk

  • API. Selleri är extremt flexibel (flera resultat backends, trevligt konfigurationsformat, arbetsflöde canvas stöd) men naturligtvis denna kraft kan vara förvirrande. Däremot är RQ api enkelt.

  • Underuppgiftsstöd. Selleri stöder deluppgifter (t.ex. att skapa nya uppgifter från befintliga uppgifter). Jag vet inte om RQ gör det

  • Gemenskap och stabilitet. Selleri är nog mer etablerat, men de är båda aktiva projekt. I skrivande stund har Celery ~3500 stjärnor på Github medan RQ har ~2000 och båda projekten visar aktiv utveckling

Enligt min åsikt är selleri inte så komplext som dess rykte kan få dig att tro, men du måste RTFM.

Så varför skulle någon vara villig att byta ut (förmodligen mer fullfjädrad) selleri mot RQ? I mina tankar handlar allt om enkelheten. Genom att begränsa sig till Redis+Unix ger RQ enklare dokumentation, enklare kodbas och ett enklare API. Det betyder att du (och potentiella bidragsgivare till ditt projekt) kan fokusera på koden du bryr dig om, istället för att behöva behålla detaljer om uppgiftskösystemet i ditt arbetsminne. Vi har alla en gräns för hur många detaljer som kan finnas i vårt huvud på en gång, och genom att ta bort behovet av att ha uppgifter om uppgiftsköerna därinne kan RQ återgå till koden du bryr dig om. Den enkelheten kommer på bekostnad av funktioner som interspråkiga uppgiftsköer, brett OS-stöd, 100 % pålitliga meddelandegarantier och möjligheten att enkelt byta meddelandeförmedlare.



  1. Mongodb-fråga baserad på objekt vid specifik position i arrayen

  2. Node.js fel Fel:Kan inte hitta modulen 'mongoose'

  3. Redis aktiv-aktiv replikering

  4. Hur tar jag bort nycklar?