"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > सेलेरी और डॉकर का उपयोग करके Django में क्रॉन जॉब चलाना

सेलेरी और डॉकर का उपयोग करके Django में क्रॉन जॉब चलाना

2024-09-01 को प्रकाशित
ब्राउज़ करें:247

Running a Cron Job in Django Using Celery and Docker

क्रॉन जॉब्स का परिचय

क्रॉन जॉब एक ​​निर्धारित कार्य है जो निर्दिष्ट अंतराल पर स्वचालित रूप से चलता है। ये कार्य अनुस्मारक ईमेल भेजने, रिपोर्ट तैयार करने या डेटाबेस साफ़ करने जैसे दोहराए जाने वाले कार्यों को स्वचालित करने के लिए उपयोगी हैं। Django प्रोजेक्ट में, क्रॉन जॉब्स को सेलेरी जैसे टूल का उपयोग करके स्थापित किया जा सकता है, जो शेड्यूलिंग और कार्यों को प्रबंधित करना आसान और कुशल बनाता है।

अपना Django प्रोजेक्ट सेट करना

आइए एक Django प्रोजेक्ट बनाकर, आवश्यक पैकेज इंस्टॉल करके, और फिर डॉकर के साथ प्रोजेक्ट को कंटेनरीकृत करके शुरुआत करें।

एक वर्चुअल वातावरण बनाएं और Django और DRF इंस्टॉल करें

  • अपना टर्मिनल खोलें और अपनी प्रोजेक्ट निर्देशिका पर जाएँ।
  • आभासी वातावरण बनाएं और सक्रिय करें:
python -m venv myenv
source myenv/bin/activate  # On Windows, use myenv\Scripts\activate
  • Django और Django REST फ्रेमवर्क स्थापित करें:
pip install django djangorestframework

एक Django प्रोजेक्ट और ऐप बनाएं

  • एक नया Django प्रोजेक्ट बनाएं:
django-admin startproject myproject
cd myproject
  • एक नया Django ऐप बनाएं:
python manage.py startapp myapp
  • एप्लिकेशन को अपनी सेटिंग्स.py में जोड़ें:
# myproject/settings.py

INSTALLED_APPS = [
    ...
    'myapp',
    'rest_framework',
]

अजवाइन और रेडिस स्थापित करें

  • अजवाइन और रेडिस स्थापित करें:
pip install celery redis
  • Celery.py फ़ाइल बनाकर अपने प्रोजेक्ट में सेलेरी सेट करें:
# 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'
  • सेलेरी को Django के साथ लोड करने के लिए init.py को संशोधित करें:
# myproject/__init__.py
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

__all__ = ('celery_app',)
  • 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

अजवाइन टास्क बनाएं

अपने Django ऐप में, Tasks.py में कार्य को परिभाषित करें:

# myapp/tasks.py
from celery import shared_task

@shared_task
def my_scheduled_task():
    print("This task runs every every day.")

डॉकर कॉन्फ़िगरेशन बनाएं

  • एपीआई के लिए अपने Django के लिए एक Dockerfile बनाएं (नाम: 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"]
  • अजवाइन के लिए एक डॉकरफाइल बनाएं (नाम: 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"]
  • अपनी निर्भरताओं को सूचीबद्ध करने के लिए एक require.txt फ़ाइल बनाएं:
Django==4.2
djangorestframework==3.14.0
celery==5.3.1
redis==5.0.0
  • सेवाओं को प्रबंधित करने के लिए एक docker-compose.yml फ़ाइल बनाएं:
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
  • एक .env फ़ाइल बनाएं और उसमें Redis URL मान जोड़ें:
REDIS_URL=

डॉकर कंटेनर बनाएं और चलाएं

  • डॉकर छवियां बनाएं और चलाएं:
docker-compose up --build

यह सेलेरी वर्कर और सेलेरी बीट शेड्यूलर के साथ आपका Django एप्लिकेशन शुरू करेगा।

क्रॉन जॉब सत्यापित करें

आपके सेलेरी कार्य अब आपके द्वारा निर्धारित शेड्यूल के अनुसार चलने चाहिए। यह पुष्टि करने के लिए कि कार्य निष्पादित हो रहा है, आप निर्दिष्ट समय पर लॉग की जांच कर सकते हैं।

निष्कर्ष

सेलेरी, डॉकर और रेडिस का उपयोग करके Django में क्रॉन जॉब चलाना पृष्ठभूमि कार्यों के प्रबंधन के लिए एक मजबूत और स्केलेबल समाधान प्रदान करता है। डॉकर यह सुनिश्चित करता है कि आपका एप्लिकेशन विभिन्न वातावरणों में लगातार चलता रहे, जिससे तैनाती आसान हो जाती है। उपरोक्त चरणों का पालन करके, आप कार्यों को कुशलतापूर्वक स्वचालित कर सकते हैं और अपने Django प्रोजेक्ट को आसानी से प्रबंधित कर सकते हैं।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/engrmark/running-a-cron-job-in-django-using-celery-and-docker-238d?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 से संपर्क करें इसे हटाने के लिए .com
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3