Wenn Sie eine Webanwendung erstellen, müssen Sie häufig aufwändige Aufgaben ausführen. Zum Beispiel:

  • Wenn sich ein Benutzer registriert, muss eine Bestätigungs-E-Mail gesendet werden.
  • Um automatisch Datenbereinigungsaufgaben um Mitternacht jeden Tag auszuführen.
  • Wenn ein Benutzer eine bestimmte Aufgabe plant, muss sichergestellt werden, dass sie zur festgelegten Zeit ausgeführt wird.

Django arbeitet standardmäßig so, dass es sofort auf Anfragen antwortet, daher braucht man eine Möglichkeit, langfristige Aufgaben asynchron zu verarbeiten. Hier kommt Celery ins Spiel! 🚀

Celery ist ein leistungsstarkes Werkzeug, das Ihnen hilft, asynchrone Aufgaben in Django auszuführen und Celery-Beat hilft dabei, Aufgaben zur festgelegten Zeit auszuführen.

Django Celery-Beat Aufgabenscheduling Illustration

1️⃣ So stellen Sie geplante Aufgaben in Django-Celery-Beat ein

Es gibt zwei Hauptmethoden, um geplante Aufgaben in Celery-Beat einzustellen.

✅ (1) Geplante Einstellungen über die Django-Admin-Oberfläche

Django-Celery-Beat ermöglicht es Ihnen, geplante Aufgaben direkt über eine GUI im Django-Admin-Bereich einzurichten.

📌 Merkmale
  • Mit einfachen Einstellungen ohne Codierung können Sie regelmäßige Aufgaben ausführen.
  • Sie können wenn Sie sich auf der Django-Admin-Seite befinden, UI-basierte regelmäßige Aufgaben einstellen und ändern.
  • Allerdings ist es eine statische Einstellung, die sich schwierig dynamisch änderbar macht in Verbindung mit Benutzeranfragen.
📌 Wann sollte man es verwenden?
  • Wenn keine Interaktion zwischen der Anwendung und dem Benutzer erforderlich ist
  • Beispiel) Eine automatisierte Datensicherung, die jeden Tag um Mitternacht durchgeführt wird
  • Beispiel) Eine Aufgabe, die jeden Montagmorgen bestimmte API-Daten aktualisiert

✅ (2) Dynamisch geplante Aufgaben über Python-Code erstellen

Sie können geplante Aufgaben in Celery-Beat auch dynamisch über Code erstellen.

📌 Merkmale
  • Sie können geplante Aufgaben dynamisch gemäß den Anforderungen des Benutzers erstellen.
  • Sie können geplante Aufgaben erstellen, ändern und löschen.
  • Ohne Umwege über die Admin-Oberfläche können Sie regelmäßige Aufgaben direkt in der Ansicht registrieren.
📌 Wann sollte man es verwenden?
  • Wenn eine bestimmte Benutzeranfrage eine geplante Aufgabe erfordert.
  • Beispiel) Wenn ein Benutzer "Vorbestellung" macht, wird eine Aufgabe registriert, die in 2 Stunden automatisch storniert wird.
  • Beispiel) Wenn ein Benutzer die Funktion "E-Mail-Erinnerung" einrichtet, wird eine E-Mail-Benachrichtigung zur festgelegten Zeit geplant.

2️⃣ [Praxis] Erstellen geplanter Aufgaben mit Python-Code

Schritt 1: Celery-Aufgabe definieren

from celery import shared_task

@shared_task
def send_reminder_email(user_id):
    # Hier wird die Logik zum Senden der E-Mail implementiert
    print(f"📧 Erinnerung E-Mail wurde an Benutzer {user_id} gesendet!")

Schritt 2: Erstellen des PeriodicTask-Objekts in Django-Celery-Beat

from django_celery_beat.models import PeriodicTask, IntervalSchedule
import json

# 1️⃣ Ausführungsintervall (Interval) erstellen (z.B. alle 10 Minuten)
schedule, created = IntervalSchedule.objects.get_or_create(
    every=10,  # alle 10 Minuten
    period=IntervalSchedule.MINUTES
)

# 2️⃣ PeriodicTask erstellen
task = PeriodicTask.objects.create(
    interval=schedule,  # Ausführungsintervall
    name="Send Reminder Email",  # Aufgabenname
    task="myapp.tasks.send_reminder_email",  # Zu ausführender Celery-Aufgabenname
    args=json.dumps([1]),  # Benutzer-ID übergeben (hier nur als Beispiel Benutzer 1)
)

🎯 Fazit: Celery ist ein Muss für Django-Entwickler!

Celery ist ein unentbehrliches Werkzeug, das es ermöglicht, asynchrone Aufgaben in Django zu verwalten und geplant auszuführen.

Insbesondere ermöglicht die Verwendung von Celery-Beat die Einrichtung regelmäßiger Aufgaben und die dynamische Verwaltung von Planungen basierend auf bestimmten Ereignissen.

📌 Zusammenfassend:

  1. Django-Celery-Beat ist ein mächtiges Werkzeug zur Ausführung geplanter Aufgaben.
  2. Mit Django Admin (GUI) können regelmäßige Aufgaben bequem eingerichtet werden.
  3. Wenn Sie Aufgaben über Python-Code erstellen, können Sie die Planung dynamisch in Verbindung mit Benutzeranfragen verwalten.
  4. Für Django-Entwickler ist es unerlässlich, die grundlegenden Konzepte von Celery und Celery-Beat zu erlernen!

🔥 Vorschau auf den nächsten Beitrag

In diesem Beitrag haben wir kurz erläutert, wie man mit Code geplante Aufgaben in Celery-Beat erstellt. In der Praxis werden jedoch die verschiedenen Felder des `PeriodicTask`-Modells genutzt, um mit komplexen Logiken umzugehen.

Im nächsten Beitrag werden wir genauer auf die praktische Codierung verschiedener geplanter Aufgaben eingehen und welche Rolle jedes Feld des `PeriodicTask`-Modells spielt.

Wenn Sie mehr über tiefere Anwendungen von Celery erfahren möchten, bleiben Sie dran für den nächsten Beitrag! 🚀

Und falls Sie mehr Beiträge über Celery auf dem Blog sehen möchten,

suchen Sie gerne in der Liste der 'ähnlichen Beiträge' weiter unten oder im Suchfeld oben rechts nach "Celery"! 😊