Ausführen eines Cron-Jobs in Django mit Celery und Docker
Einführung in Cron-Jobs
Ein Cron-Job ist eine geplante Aufgabe, die automatisch in bestimmten Intervallen ausgeführt wird. Diese Aufgaben sind nützlich, um sich wiederholende Vorgänge wie das Versenden von Erinnerungs-E-Mails, das Erstellen von Berichten oder das Bereinigen von Datenbanken zu automatisieren. In einem Django-Projekt können Cron-Jobs mit Tools wie Celery eingerichtet werden, was die Planung und Verwaltung von Aufgaben einfach und effizient macht.
Einrichten Ihres Django-Projekts
Beginnen wir mit der Erstellung eines Django-Projekts, der Installation der erforderlichen Pakete und der anschließenden Containerisierung des Projekts mit Docker.
Erstellen Sie eine virtuelle Umgebung und installieren Sie Django und DRF
- Öffnen Sie Ihr Terminal und navigieren Sie zu Ihrem Projektverzeichnis.
- Erstellen und aktivieren Sie eine virtuelle Umgebung:
python -m venv myenv source myenv/bin/activate # On Windows, use myenv\Scripts\activate
- Installieren Sie Django und Django REST Framework:
pip install django djangorestframework
Erstellen Sie ein Django-Projekt und eine Django-App
- Erstellen Sie ein neues Django-Projekt:
django-admin startproject myproject cd myproject
- Erstellen Sie eine neue Django-App:
python manage.py startapp myapp
- Fügen Sie die App zu Ihren Settings.py hinzu:
# myproject/settings.py INSTALLED_APPS = [ ... 'myapp', 'rest_framework', ]
Installieren Sie Sellerie und Redis
- Sellerie und Redis installieren:
pip install celery redis
- Richten Sie Celery in Ihrem Projekt ein, indem Sie eine celery.py-Datei erstellen:
# myproject/celery.py from __future__ import absolute_import, unicode_literals import os from celery import Celery os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings') app = Celery('myproject') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks() app.conf.beat_schedule = { 'run-this-task-every-day': { 'task': 'myapp.tasks.my_scheduled_task', 'schedule': crontab(minute="00", hour="7"), # Executes every day at 7 AM }, } app.conf.timezone = 'UTC'
- Ändern Sie init.py, um Celery mit Django zu laden:
# myproject/__init__.py from __future__ import absolute_import, unicode_literals from .celery import app as celery_app __all__ = ('celery_app',)
- Konfigurieren Sie Celery in Settings.py:
CELERY_BROKER_URL = os.environ.get('REDIS_URL') CELERY_RESULT_BACKEND = os.environ.get('REDIS_URL') CELERY_ACCEPT_CONTENT = ['json'] CELERY_TASK_SERIALIZER = 'json' CELERY_RESULT_SERIALIZER = 'json' CELERY_TIMEZONE = 'UTC' CELERY_BROKER_CONNECTION_RETRY_ON_STARTUP = True
Erstellen Sie eine Sellerie-Aufgabe
Definieren Sie in Ihrer Django-App die Aufgabe in task.py:
# myapp/tasks.py from celery import shared_task @shared_task def my_scheduled_task(): print("This task runs every every day.")
Erstellen Sie eine Docker-Konfiguration
- Erstellen Sie eine Docker-Datei für Ihr Django für die API (benannt: Dockerfile.myapi):
FROM python:3.8-alpine3.15 ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 WORKDIR /app COPY requirements.txt /app RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 9000 CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "myproject.wsgi:application"]
- Erstellen Sie eine Docker-Datei für den Sellerie (mit dem Namen: Dockerfile.myjob).
FROM python:3.8-alpine3.15 ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 WORKDIR /app COPY requirements.txt /app RUN pip install --no-cache-dir -r requirements.txt COPY . /app CMD ["celery", "-A", "myproject", "worker", "--loglevel=info", "--concurrency=4", "-E", "-B"]
- Erstellen Sie eine „requirements.txt“-Datei, um Ihre Abhängigkeiten aufzulisten:
Django==4.2 djangorestframework==3.14.0 celery==5.3.1 redis==5.0.0
- Erstellen Sie eine docker-compose.yml-Datei, um Dienste zu verwalten:
services: app: build: context: . dockerfile: Dockerfile.myapi container_name: myapp_api ports: - 7000:7000 env_file: - .env celery: build: context: . dockerfile: Dockerfile.myjob container_name: myapp_job depends_on: - app env_file: - .env
- Erstellen Sie eine .env-Datei und fügen Sie den Redis-URL-Wert hinzu:
REDIS_URL=<your_redis_url>
Erstellen Sie die Docker-Container und führen Sie sie aus
- Erstellen Sie die Docker-Images und führen Sie sie aus:
docker-compose up --build
Dadurch wird Ihre Django-Anwendung zusammen mit dem Celery-Worker und dem Celery-Beat-Scheduler gestartet.
Überprüfen Sie den Cron-Job
Ihre Celery-Aufgaben sollten jetzt gemäß dem von Ihnen definierten Zeitplan ausgeführt werden. Sie können die Protokolle zum angegebenen Zeitpunkt überprüfen, um zu bestätigen, dass die Aufgabe ausgeführt wird.
Abschluss
Das Ausführen von Cron-Jobs in Django mit Celery, Docker und Redis bietet eine robuste und skalierbare Lösung für die Verwaltung von Hintergrundaufgaben. Docker stellt sicher, dass Ihre Anwendung in verschiedenen Umgebungen konsistent ausgeführt wird, was die Bereitstellung erleichtert. Indem Sie die oben genannten Schritte ausführen, können Sie Aufgaben effizient automatisieren und Ihr Django-Projekt problemlos verwalten.
Das obige ist der detaillierte Inhalt vonAusführen eines Cron-Jobs in Django mit Celery und Docker. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

In diesem Artikel soll die Anfänger der SQLALCHEMY die Warnung "entfernte20Warning" beheben, die bei der Verwendung von create_engine und dem nachfolgenden "ResourceClostener" -Knotenschließfehler auftreten. Der Artikel erläutert die Ursache dieser Warnung im Detail und liefert spezifische Schritte und Codebeispiele, um die Warn- und Behebung von Verbindungsproblemen zu beseitigen, um sicherzustellen, dass Sie die Datenbank reibungslos abfragen und bedienen können.

Python ist ein effizientes Instrument zur Implementierung von ETL -Prozessen. 1. Datenextraktion: Daten können aus Datenbanken, APIs, Dateien und anderen Quellen über Pandas, SQLalchemy, Anfragen und andere Bibliotheken extrahiert werden; 2. Datenumwandlung: Verwenden Sie Pandas für Reinigung, Typumwandlung, Assoziation, Aggregation und andere Vorgänge, um die Datenqualität zu gewährleisten und die Leistung zu optimieren. A. Datenbelastung: Verwenden Sie Pandas 'TO_SQL -Methode oder Cloud -Plattform -SDK, um Daten an das Zielsystem zu schreiben, auf Schreibmethoden und Stapelverarbeitung zu achten. 4. Toolempfehlungen: Luftstrom, Dagster, Präfekten werden zur Prozessplanung und -verwaltung verwendet, um Protokollalarme und virtuelle Umgebungen zu kombinieren, um die Stabilität und Wartbarkeit zu verbessern.

Die Methode zum Ausfüllen von Excel -Daten in Webformulare mithilfe von Python lautet: Verwenden Sie zunächst Pandas, um Excel -Daten zu lesen und dann mit Selen das Browser zu steuern, um das Formular automatisch zu füllen und zu übermitteln. Zu den spezifischen Schritten gehören die Installation von Pandas, OpenPyxl- und Selenium -Bibliotheken, das Herunterladen des entsprechenden Browsertreibers, die Verwendung von Pandas zum Lesen von Namen, E -Mails, Telefon und anderen Feldern in der Datei data.xlsx, starten Sie den Browser über Selen, um das Ziel -Last zu erstellen. Wenn Sie die Ausnahme des Stellverfahrens verarbeiten, können Sie die Ausnahme des Stellverfahrens verarbeiten. Formieren und verarbeiten Sie alle Datenlinien in einer Schleife.

Die Verwendung von Pandastyling in Jupyternotebook kann die schöne Anzeige von DataFrame erreichen. 1. Verwenden Sie Highlight_max und highlight_min, um den Maximalwert (grün) und den minimalen Wert (rot) jeder Spalte hervorzuheben. 2. Fügen Sie die Farbgradient -Hintergrundfarbe (wie Blau oder Rot) zur numerischen Spalte über Hintergrund_gradient hinzu, um die Datengröße visuell anzuzeigen. 3.. Benutzerdefinierte Funktion color_score kombiniert mit ApplyMap zum Festlegen von Textfarben für verschiedene Bruchintervalle (≥90 Grün, 80 ~ 89 Orange, 60 ~ 79 rot,

Installieren Sie den entsprechenden Datenbanktreiber; 2. verwenden Sie Connect (), um eine Verbindung zur Datenbank herzustellen. 3. Erstellen Sie ein Cursorobjekt; V. 5. Verwenden Sie Fetchall () usw., um Ergebnisse zu erhalten. 6. Commit () ist nach der Änderung erforderlich; 7. Schließlich schließen Sie die Verbindung oder verwenden Sie einen Kontextmanager, um sie automatisch zu behandeln. Der vollständige Prozess stellt sicher, dass die SQL -Operationen sicher und effizient sind.

Um eine virtuelle Python -Umgebung zu erstellen, können Sie das Venv -Modul verwenden. Die Schritte sind: 1. Geben Sie das Projektverzeichnis ein, um die Python-Mvenvenv-Umgebung auszuführen, um die Umgebung zu schaffen. 2. verwenden Sie SourceEnv/bin/aktivieren Sie in Mac/Linux und Env \ Skripts \ aktivieren in Windows; 3.. Verwenden Sie das Pipinstall -Installationspaket, Pipfreeze> Anforderungen.txt, um Abhängigkeiten zu exportieren. V. Virtuelle Umgebungen können Projektabhängigkeiten isolieren, um Konflikte zu verhindern, insbesondere für die Entwicklung von Mehrfachprojekten, und Redakteure wie Pycharm oder VSCODE sind es ebenfalls

Verwenden Sie Multiprocessing.queue, um Daten zwischen mehreren Prozessen zu übergeben, die für Szenarien mehrerer Hersteller und Verbraucher geeignet sind. 2. Verwenden Sie Multiprocessing.Pipe, um eine bidirektionale Hochgeschwindigkeitskommunikation zwischen zwei Prozessen zu erreichen, jedoch nur für Zweipunktverbindungen; 3. Verwenden Sie Wert und Array, um einfache Datentypen im gemeinsamen Speicher zu speichern, und müssen mit Sperre verwendet werden, um Wettbewerbsbedingungen zu vermeiden. 4. Verwenden Sie den Manager, um komplexe Datenstrukturen wie Listen und Wörterbücher auszutauschen, die hoch flexibel sind, aber eine geringe Leistung haben und für Szenarien mit komplexen gemeinsamen Zuständen geeignet sind. Geeignete Methoden sollten basierend auf Datengröße, Leistungsanforderungen und Komplexität ausgewählt werden. Warteschlange und Manager eignen sich am besten für Anfänger.

Pythonlistscani Implementierungsaufnahme append () penouspop () popopoperations.1.UseAppend () zwei -glückselige StotetopeThestack.2.USEP OP () TOREMOVEANDRETURTHETOPHETOP -Element, EnsuringToCheCifthestackisnotemptoavoidEx -Regerror.
