0Pricing
Django Academy · Lezione

Job pianificati con Celery Beat

Eseguire task periodici secondo una pianificazione

Job pianificati con Celery Beat è una lezione Django Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Django Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Django Academy include 4 lezioni in totale.

Oltre le task una tantum

Finora le task vengono eseguite quando le accoda. Tuttavia, alcuni processi devono essere eseguiti secondo una pianificazione: report notturni, pulizie orarie, riepiloghi settimanali. È qui che entra in gioco Beat. ⏰

Che cos'è Celery Beat

Celery Beat è uno scheduler. È un processo separato che si attiva all'ora stabilita e inserisce le task pianificate nella stessa coda da cui leggono i worker.

Beat e worker insieme

Beat si limita ad accodare i processi secondo la pianificazione: non li esegue mai direttamente. È comunque necessario che sia in esecuzione un worker per eseguire ciò che Beat accoda.

Installare lo scheduler

Il pacchetto django-celery-beat memorizza la pianificazione nel database, quindi in seguito è possibile modificarla anche dall'area di amministrazione. Lo installi innanzitutto.

pip install django-celery-beat

Definire una pianificazione Beat

Nelle impostazioni, CELERY_BEAT_SCHEDULE è un dict che associa un nome al percorso di una task e alla frequenza con cui eseguirla.

CELERY_BEAT_SCHEDULE = {
    "daily-report": {
        "task": "reports.tasks.send_report",
        "schedule": 86400.0,
    },
}

Intervalli in secondi

Un numero semplice significa «ogni N secondi». Quindi 86400.0 corrisponde a una volta al giorno e 3600.0 a una volta all'ora. È semplice, ma un po' rigido per i calendari reali.

Crontab per calendari reali

Per «le 8:00 di ogni lunedì» usi una pianificazione crontab. Ha una sintassi simile a una riga cron e gestisce con precisione giorni, ore e minuti.

from celery.schedules import crontab
schedule = crontab(hour=8, minute=0, day_of_week=1)

Inserire crontab

Inserisca direttamente un oggetto crontab nel valore della pianificazione per controllare esattamente quando deve essere eseguita una task.

"weekly-digest": {
    "task": "news.tasks.digest",
    "schedule": crontab(hour=8, minute=0, day_of_week="mon"),
}

Eseguire il processo Beat

Avvii Beat in un terminale dedicato, accanto al worker. Ora avrà tre processi: server web, worker e scheduler beat.

celery -A myproject beat -l info

Evitare Beat duplicati

Esegua un solo processo Beat. Due scheduler fanno eseguire ogni processo due volte, causando un doppio invio delle email o un doppio addebito agli utenti. 🚫

Modificare le pianificazioni dall'area di amministrazione

Con django-celery-beat, le pianificazioni risiedono nel database, quindi anche chi non sviluppa può aggiungere o mettere in pausa le task periodiche direttamente dall'area di amministrazione di Django.

Verifica rapida

Qual è il rapporto tra Celery Beat e il worker?

Riepilogo: processi pianificati

Celery Beat accoda le task secondo una pianificazione, usando intervalli o crontab. Esegua esattamente un Beat insieme a un worker e modifichi le pianificazioni dall'area di amministrazione. 🗓️

Domande Frequenti

La lezione «Job pianificati con Celery Beat» è gratuita?

Sì — il testo completo di «Job pianificati con Celery Beat» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Django Academy, passa a CoddyKit PRO. Il corso Django Academy include 4 lezioni in totale.

Cosa imparerò in «Job pianificati con Celery Beat»?

Eseguire task periodici secondo una pianificazione Eserciti Django Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Django Academy?

Non è richiesta alcuna esperienza precedente. Django Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Job pianificati con Celery Beat»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Django Academy?

Sì. Ogni lezione Django Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Perché servono i task in background
  2. Configurare Celery con un broker
  3. Scrivere e chiamare @shared_task
  4. Job pianificati con Celery Beat
← Torna a Django Academy