Pianificazione di Attività Asincrone Multithread in Django con Celery

La gestione delle attività in un'applicazione Web può diventare complessa, soprattutto quando è necessario eseguire operazioni che richiedono molto tempo in modo asincrono. Django, un framework Web popolare, può essere esteso con Celery per gestire in modo efficiente le attività asincrone. In questo post del blog, esploreremo come impostare la pianificazione periodica delle attività con Celery in un'applicazione Django. Ciò consente all'applicazione di eseguire attività in background a intervalli specificati e di scaricare l'elaborazione delle attività dai thread dell'applicazione principale.
1. Installa Celery e Django Celery Beat
Il viaggio inizia con l'installazione di Celery e django-celery-beat. Questi sono componenti essenziali per la pianificazione e l'esecuzione delle attività in Django. Puoi installarli usando pip:
pip install celery django-celery-beat
2. Configura Celery
Dopo aver installato Celery, devi configurarlo per funzionare con la tua applicazione Django. Inizia creando un file denominato celery.py nella directory principale del tuo progetto. Questo file inizializzerà Celery e lo collegherà alle impostazioni di Django.
from celery import Celery import os # Set the default Django settings module for the 'celery' program. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project_name.settings') app = Celery('your_project_name') # Using a string here means the worker will not have to serialize # the configuration object to child processes. app.config_from_object('django.conf:settings', namespace='CELERY') # Load task modules from all registered Django apps. app.autodiscover_tasks()
Per assicurarti che questa configurazione venga caricata all'avvio di Django, importa la tua app Celery in your_project_name/__init__.py file:
from .celery import app as celery_app __all__ = ('celery_app',)
3. Aggiorna le impostazioni di Django
Successivamente, integra Celery con le impostazioni di Django aggiornando settings.py file. Ciò include la specificazione del broker e del backend dei risultati, che potrebbe essere RabbitMQ o Redis.
CELERY_BROKER_URL = 'redis://localhost:6379/0' # or 'amqp://localhost//' for RabbitMQ CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' CELERY_TIMEZONE = 'UTC' from celery.schedules import crontab CELERY_BEAT_SCHEDULE = { 'task-name': { 'task': 'myapp.tasks.task_function', 'schedule': crontab(minute=0, hour=0), # Executes daily at midnight }, }
4. Definisci il tuo compito
Ora è il momento di definire quali dovrebbero essere i tuoi compiti. Crea un tasks.py file nella tua app Django (ad esempio, myapp ) e aggiungi la funzione della tua attività.
from celery import shared_task @shared_task def task_function(): # Logic for your asynchronous, multithreaded task print("Task is executing")
Qui, @compito_condiviso è un decoratore fornito da Celery che contrassegna la funzione come un'attività richiamabile.
5. Esegui Celery Worker e Beat
Infine, è necessario eseguire il worker Celery e beat per iniziare a elaborare le attività e pianificarle in base alla configurazione.
# Start Celery Worker celery -A your_project_name worker -l info # Start Celery Beat celery -A your_project_name beat -l info
Questi comandi avviano il worker per elaborare task asincroni e il beat process per gestire task periodici. Assicurati che il tuo message broker come Redis o RabbitMQ sia in esecuzione prima di eseguire questi comandi.
Seguendo questi passaggi, hai equipaggiato la tua applicazione Django per gestire in modo efficiente task asincroni periodici, migliorando le prestazioni e la reattività della tua applicazione. Celery è uno strumento potente e con questa configurazione, sei pronto per esplorare idee di elaborazione di task più complesse.
Clausola di Esclusione di Responsabilità per la Ripubblicazione: Questo contenuto è protetto da copyright e tutti i diritti sono riservati dall'autore. Siete invitati a ripostare o condividere questa pagina, ma assicuratevi di fornire un chiaro riconoscimento alla fonte originale con un hyperlink che rimanda a questa pagina. Grazie per rispettare il nostro contenuto!
Questo articolo è stato utile?
196 su 196 hanno trovato questo utile
John Tanner
FondatoreSono uno sviluppatore software altamente qualificato con oltre 20 anni di esperienza nello sviluppo full-stack multipiattaforma. Mi specializzo nella progettazione e gestione di architetture di progetti su larga scala e nella semplificazione di sistemi complessi. La mia esperienza si estende allo sviluppo in Python, Rust e Django. Ho una profonda competenza nelle tecnologie blockchain, intelligenza artificiale, sistemi ad alta concorrenza, scraping di dati di app e web, sviluppo di API, ottimizzazione di database, containerizzazione di progetti e deployment in ambienti di produzione.
Contatto John TannerPost correlato:
- Svelare il potere di Django: il framework backend definitivo
- Creare applicazioni potenziate dall'IA con Django
- Servizi di Sviluppo Django
- Creare un sito web multilingue con Django: migliori pratiche e strategie SEO
- Come costruire un sito web indipendente di successo per il commercio estero: guida completa dalla ricerca di mercato all'ottimizzazione SEO