Celery è un’implementazione di code di attività per applicazioni web Python usata per eseguire asincronicamente il lavoro al di fuori del ciclo richiesta-risposta HTTP.

Celery è un’implementazione del concetto di coda di attività. Scopri di più nel capitolo sullo sviluppo web o guarda l’indice di tutti gli argomenti.

Perché Celery è utile?

Le code di attività e l’implementazione di Celery in particolare sono una delle parti più difficili da comprendere dello stack delle applicazioni web in Python.

Se sei uno sviluppatore junior può essere poco chiaro il motivo per cui spostare il lavoro al di fuori del ciclo richiesta-risposta HTTP sia importante. In breve, volete che il vostro server WSGI risponda alle richieste in arrivo il più velocemente possibile, perché ogni richiesta impegna un processo worker finché la risposta non è finita. Spostare il lavoro da quei lavoratori facendo girare lavori asincroni come compiti in una coda è un modo semplice per migliorare i tempi di risposta del server WSGI.

Qual è la differenza tra Celeryd e Celerybeat?

Celery può essere usato per eseguire lavori batch in background su un programma regolare. Un concetto chiave in Celery è la differenza tra il demone Celery (celeryd), che esegue i compiti, e Celerybeat, che è uno scheduler. Pensate a Celeryd come a un insieme di uno o più worker che gestiscono qualsiasi compito gli mettiate davanti. Ogni lavoratore eseguirà un compito e quando il compito è completato prenderà il successivo.Il ciclo si ripeterà continuamente, aspettando solo oziosamente quando non ci sono più compiti da mettere davanti a loro.

Celerybeat d’altra parte è come un capo che tiene traccia di quando i compiti devono essere eseguiti. La vostra applicazione può dire a Celerybeat di eseguire un compito a intervalli di tempo, come ogni 5 secondi o una volta alla settimana. Celerybeat può anche essere istruito a eseguire i compiti in una data o ora specifica, come le 17:03 ogni domenica. Quando l’intervallo o il tempo specifico viene raggiunto, Celerybeat passerà il lavoro a Celeryd per eseguirlo sul prossimo lavoratore disponibile.

Tutorial e consigli su Celery

Celery è uno strumento potente che può essere difficile da comprendere all’inizio. Assicuratevi di leggere i concetti di coda di attività e poi immergetevi in questi specifici tutorial di Celery.

  • A 4 Minute Intro to Celery è un breve screencast introduttivo sulla coda di attività.

  • Questa serie di post del blog sull’architettura di Celery, Celery in the wild: tips and tricks to run async tasks in the real worldanddealing 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.

  • Come usare Celery con RabbitMQ è una dettagliata guida all’uso di questi strumenti su un VPS Ubuntu.

  • Celery – Best Practicesexplains cose che non si dovrebbero fare con Celery e mostra alcune caratteristiche sottoutilizzate per rendere le code di attività più facili da lavorare.

  • Celery Best Practices è il seguito di un altro autore al post sulle migliori pratiche di cui sopra che si basa su alcune delle sue conoscenze acquisite in oltre 3 anni di utilizzo di Celery.

  • Common Issues Using Celery (And Other Task Queues)contiene buoni consigli sugli errori da evitare nelle vostre configurazioni dei task, come l’uso delle transazioni sul database e il ritentare i task falliti.

  • Asynchronous Processing in Web Applications Part Oneand Part Two sono ottime letture per capire la differenza tra una task queue e perché non dovreste usare il vostro database come tale.

  • My Experiences With A Long-Running Celery-Based Microprocessgives some good tips and advice based on experience with Celery workersthat take a long time to complete their jobs.

  • Checklist to build great Celery async tasks è un sito specificamente progettato per darvi una lista di buone pratiche da seguire mentre progettate la vostra configurazione della coda di attività e la distribuite negli ambienti di sviluppo, staging e produzione.

  • Heroku ha scritto su come proteggere Celery quando i task sono altrimenti inviati su reti non criptate.

  • Il test delle unità di Celery spiega tre strategie per testare il codice nelle funzioni che Celery esegue. Il post conclude che chiamare i task di Celery in modo sincrono per testarli è la migliore strategia senza alcuna controindicazione. Tuttavia, tenete a mente che qualsiasi metodo di test che non è lo stesso di come la funzione verrà eseguita in un ambiente di produzione può potenzialmente portare a bug trascurati. C’è anche un repository Git open source con tutto il codice sorgente del post.

  • Il monitoraggio Rollbar di Celery in un’app Django spiega come usare Rollbar per monitorare le attività. Super utile quando i lavoratori invariabilmente muoiono senza una ragione apparente.

  • 3 Gotchas per lavorare con Celery sono cose da tenere a mente quando si è nuovi all’implementazione della coda dei compiti di Celery.

  • Dask e Celery mette a confronto Dask.distributed con Celery per progetti Python. Il post fornisce esempi di codice per mostrare come eseguire i compiti con entrambe le code di attività.

  • Python+Celery: Chaining jobs? spiega che i compiti di Celery dovrebbero essere dipendenti l’uno dall’altro usando le catene di Celery, non le dipendenze dirette tra i compiti.

Celery con i framework web

Celery è tipicamente usato con un framework web comeDjango, Flask o Pyramid.Queste risorse mostrano come integrare la coda dei compiti di Celery con il framework web di vostra scelta.

  • Come usare Celery e RabbitMQ con Djangoè un ottimo tutorial che mostra come installare e impostare un task di base con Django.

  • Miguel Grinberg ha scritto un bel post sull’uso della coda di attività Celery con Flask, dando una panoramica di Celery seguita da codice specifico per impostare la coda di attività e integrarla con Flask.

  • Setting up an asynchronous task queue for Django using Celery and Redisis a straightforward tutorial for setting up the Celery task queue forDjango web applications using the Redis broker on the back end.

  • A Guide to Sending Scheduled Reports Via Email Using Django And Celeryshow you how to usedjango-celeryin your application. Si noti tuttavia che ci sono altri modi di integrare Celery con Django che non richiedono la dipendenza django-celery.

  • Flask asynchronous background tasks with Celery and Rediscombina Celery con Redis come broker eFlask come framework dell’applicazione di esempio.

  • Celery e Django e Docker: Oh My! mostra come creare task Celery per Django all’interno di un contenitore Docker. Fornisce anche alcuni

  • Asynchronous Tasks With Django and Celeryshow come integrare Celery con Django e creare Tasks periodici.

  • Getting Started Scheduling Tasks with Celeryè una dettagliata guida alla configurazione di Celery con Django (sebbene Celery possa essere usato senza problemi anche con altri framework).

  • Introduzione a Celery per Python+Djang fornisce un’introduzione alla coda di attività di Celery con Django come framework per costruire un’applicazione web.

  • Task asincroni con Falcon e Celeryconfigura Celery con il framework Falcon, che è meno usato nei tutorial web.

  • Custom Celery task states è un post avanzato sulla creazione di stati personalizzati, che è particolarmente utile per gli stati transitori nella vostra applicazione che non sono coperti dalla configurazione predefinita di Celery.

  • Asynchronous Tasks with Django and Celery guarda come configurare Celery per gestire compiti di lunga durata in un’applicazione Django.

Risorse per la distribuzione di Celery

Celery e il suo broker vengono eseguiti separatamente dai vostri server web e WSGI, quindi aggiunge una certa complessità alle vostre implementazioni. Le seguenti risorse vi guidano attraverso come gestire le implementazioni e ottenere le giuste impostazioni di configurazione.

  • La serie “Django in Production” di Rob Golding contiene un post specifico sui Background Tasks.

  • Come eseguire Celery come demone? è un breve post con il codice minimo per eseguire il demone Celery e Celerybeat come servizi di sistema su Linux.

  • Celery in Production sul blog del gruppo Caktus contiene buone pratiche dalla loro esperienza nell’uso di Celery con RabbitMQ, strumenti di monitoraggio e altri aspetti non spesso discussi nella documentazione esistente.

  • Tre consigli veloci da due anni con Celerypropone alcuni solidi consigli sui ritardi di retry, il flag -Ofair e i timeout dei task globali per Celery.

admin

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

lg