Heim Backend-Entwicklung Python-Tutorial Ausführen eines Cron-Jobs in Django mit Celery und Docker

Ausführen eines Cron-Jobs in Django mit Celery und Docker

Aug 31, 2024 am 06:01 AM

Running a Cron Job in Django Using Celery and 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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

SQLALCHEMY 2.0 Abschreibungswarnung und Verbindungs Problem Lösung Leitfaden SQLALCHEMY 2.0 Abschreibungswarnung und Verbindungs Problem Lösung Leitfaden Aug 05, 2025 pm 07:57 PM

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 für Data Engineering ETL Python für Data Engineering ETL Aug 02, 2025 am 08:48 AM

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.

Wie automatisieren Sie die Dateneingabe von Excel zu einem Webformular mit Python? Wie automatisieren Sie die Dateneingabe von Excel zu einem Webformular mit Python? Aug 12, 2025 am 02:39 AM

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.

Python Pandas Styling DataFrame Beispiel Python Pandas Styling DataFrame Beispiel Aug 04, 2025 pm 01:43 PM

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,

Wie führe ich SQL -Abfragen in Python aus? Wie führe ich SQL -Abfragen in Python aus? Aug 02, 2025 am 01:56 AM

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.

So erstellen Sie eine virtuelle Umgebung in Python So erstellen Sie eine virtuelle Umgebung in Python Aug 05, 2025 pm 01:05 PM

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

Wie teile ich Daten zwischen mehreren Prozessen in Python aus? Wie teile ich Daten zwischen mehreren Prozessen in Python aus? Aug 02, 2025 pm 01:15 PM

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.

Wie implementieren Sie eine Stapeldatenstruktur mithilfe einer Liste in Python? Wie implementieren Sie eine Stapeldatenstruktur mithilfe einer Liste in Python? Aug 03, 2025 am 06:45 AM

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

See all articles