Ecco cosa ho trovato mentre cercavo di rispondere a questa stessa identica domanda. Probabilmente non è completo e potrebbe anche essere impreciso su alcuni punti.
In breve, RQ è progettato per essere più semplice in tutto. Il sedano è progettato per essere più robusto. Sono entrambi eccellenti.
- Documentazione. RQ's documentation è completo senza essere complesso e rispecchia la semplicità generale del progetto - non ti senti mai perso o confuso. Celery's documentation è anche completo, ma ci si aspetta di rivederlo parecchio quando si impostano le cose per la prima volta poiché ci sono troppe opzioni per internalizzare
Monitoraggio. Celery's Flower e RQ dashboard sono entrambi molto semplici da configurare e ti danno almeno il 90% di tutte le informazioni che vorresti.
Supporto broker. Celery è il chiaro vincitore, RQ supporta solo Redis. Ciò significa meno documentazione su "che cos'è un broker", ma significa anche che non puoi cambiare broker in futuro se Redis non funziona più per te. Ad esempio, Instagram considered both Redis and RabbitMQ with Celery. Questo è importante perché diversi broker hanno garanzie diverse, ad es. Redis non può (al momento della scrittura) garantisce al 100% che i tuoi messaggi siano consegnati.
Code prioritarie. Il modello di coda priorità RQs è semplice ed efficace: workers read from queues in order. Il sedano richiede la rotazione di più lavoratori da consumare da diverse code. Entrambi gli approcci funzionano
Supporto OS. Celery è il chiaro vincitore qui, poiché RQ funziona solo su sistemi che supportano fork
, ad es. Sistemi Unix
Supporto lingue. RQ supporta solo Python, mentre Celery consente di inviare attività da una lingua a un'altra lingua
API.Celery è estremamente flessibile (più backend di risultati, bel formato di configurazione, supporto per il workflow canvas) ma naturalmente questo potere può essere fonte di confusione. Al contrario, l'API RQ è semplice.
Supporto del sottotask. Celery supporta le attività secondarie (ad esempio creando nuove attività all'interno delle attività esistenti). Non so se RQ fa
Comunità e Stabilità. Probabilmente il sedano è più consolidato, ma entrambi sono progetti attivi. Come della scrittura, sedano ha ~ 3500 stelle su GitHub mentre RQ ha ~ 2000 e entrambi i progetti mostrare sviluppo attivo
A mio parere, sedano non è così complesso come la sua reputazione potrebbe portare a credere, ma si devono RTFM.
Quindi, perché qualcuno dovrebbe essere disposto a scambiare il sedano (probabilmente più completo) per RQ? Nella mia mente, tutto si riduce alla semplicità. Limitando se stesso a Redis + Unix, RQ fornisce una documentazione più semplice, una base di codice più semplice e un'API più semplice. Ciò significa che tu (e potenziali contributori al tuo progetto) puoi concentrarti sul codice che ti interessa, invece di dover mantenere i dettagli sul sistema delle code delle attività nella tua memoria di lavoro. Abbiamo tutti un limite al numero di dettagli che possono esserci nella nostra testa in una sola volta e, eliminando la necessità di mantenere i dettagli della coda delle attività, RQ consente di tornare al codice che ti interessa. Questa semplicità viene a scapito di funzionalità come code di attività interlinguistiche, ampio supporto del sistema operativo, garanzie di messaggi affidabili al 100% e possibilità di cambiare facilmente i broker di messaggi.
Sfortunatamente, questo tipo di domanda non si adatta al formato di questo sito, vedere [FAQ # dontask]. Domande come queste tendono a portare a risposte vaghe che sono anche superate molto rapidamente. Se possiamo aiutarti con un problema specifico, sentiti libero di postare un'altra domanda! –
BTW mi sembra come se fosse possibile revocare le attività, anche con rq-dashboard –