क्रॉन जॉब एक निर्धारित कार्य है जो निर्दिष्ट अंतराल पर स्वचालित रूप से चलता है। ये कार्य अनुस्मारक ईमेल भेजने, रिपोर्ट तैयार करने या डेटाबेस साफ़ करने जैसे दोहराए जाने वाले कार्यों को स्वचालित करने के लिए उपयोगी हैं। Django प्रोजेक्ट में, क्रॉन जॉब्स को सेलेरी जैसे टूल का उपयोग करके स्थापित किया जा सकता है, जो शेड्यूलिंग और कार्यों को प्रबंधित करना आसान और कुशल बनाता है।
आइए एक Django प्रोजेक्ट बनाकर, आवश्यक पैकेज इंस्टॉल करके, और फिर डॉकर के साथ प्रोजेक्ट को कंटेनरीकृत करके शुरुआत करें।
python -m venv myenv source myenv/bin/activate # On Windows, use myenv\Scripts\activate
pip install django djangorestframework
django-admin startproject myproject cd myproject
python manage.py startapp myapp
# myproject/settings.py INSTALLED_APPS = [ ... 'myapp', 'rest_framework', ]
pip install celery redis
# 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'
# myproject/__init__.py from __future__ import absolute_import, unicode_literals from .celery import app as celery_app __all__ = ('celery_app',)
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.")
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"]
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"]
Django==4.2 djangorestframework==3.14.0 celery==5.3.1 redis==5.0.0
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
REDIS_URL=
docker-compose up --build
यह सेलेरी वर्कर और सेलेरी बीट शेड्यूलर के साथ आपका Django एप्लिकेशन शुरू करेगा।
आपके सेलेरी कार्य अब आपके द्वारा निर्धारित शेड्यूल के अनुसार चलने चाहिए। यह पुष्टि करने के लिए कि कार्य निष्पादित हो रहा है, आप निर्दिष्ट समय पर लॉग की जांच कर सकते हैं।
सेलेरी, डॉकर और रेडिस का उपयोग करके Django में क्रॉन जॉब चलाना पृष्ठभूमि कार्यों के प्रबंधन के लिए एक मजबूत और स्केलेबल समाधान प्रदान करता है। डॉकर यह सुनिश्चित करता है कि आपका एप्लिकेशन विभिन्न वातावरणों में लगातार चलता रहे, जिससे तैनाती आसान हो जाती है। उपरोक्त चरणों का पालन करके, आप कार्यों को कुशलतापूर्वक स्वचालित कर सकते हैं और अपने Django प्रोजेक्ट को आसानी से प्रबंधित कर सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3