"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إنشاء جدولة بسيطة في جانغو

كيفية إنشاء جدولة بسيطة في جانغو

تم النشر بتاريخ 2024-11-08
تصفح:913

How to create a simple scheduler in Django

إذا كنت بحاجة إلى تشغيل وظيفة كل X دقيقة / ثانية وما إلى ذلك للقيام ببعض عمليات التنظيف، قم بتشغيل بعض العمليات، يمكنك إجراء جدولة بسيطة بمساعدة وحدة الترابط وبرنامج Django المخصص الأوامر.

لنفترض أنني أريد استدعاء وظيفة كل 5 ثوانٍ لنشر شيء ما على واجهة برمجة تطبيقات خارجية.

في تطبيق django الخاص بك، قم بإنشاء مجلد/حزمة باسم الإدارة داخل هذا المجلد، قم بإنشاء مجلد آخر باسم الأوامر. في مجلد الأوامر، قم بإنشاء وحدة باسم runposter.py. في النهاية سيكون لديك شيء مثل هذا الهيكل yourapp/management/commands/runposter.py.

في هذا الكود نستخدم خيطًا يقوم بتشغيل حلقة طالما أنه لا يتوقف كل 5 ثوانٍ. استبدل print("posting") بالوظيفة/المنطق الذي تريد تشغيله.

# runposter.py
import time
from threading import Thread, Event
from django.conf import settings
from django.core.management.base import BaseCommand


stop_event = Event()


def my_job():
    while not stop_event.is_set():
        try:
            print("posting")
            time.sleep(5)
        except KeyboardInterrupt:
            break


class Command(BaseCommand):
    help = "Run Poster."

    def handle(self, *args, **options):

        poster = Thread(target=my_job)

        try:
            print("Starting poster...")
            poster.start()
            while poster.is_alive():
                poster.join(timeout=1)
        except KeyboardInterrupt:
            print("Stopping poster...")
            stop_event.set()
            poster.join()
            print("Poster shut down successfully!")

حسنًا، افتح الآن نافذة طرفية أخرى وقم بتشغيل python manager.py runposter. تم إنشاء ملصق تشغيل الأوامر كما ترون من اسم الوحدة التي قدمناها.

بالطبع، بالنسبة لشيء أكثر تعقيدًا، أوصي باستخدام rq-scheduler أو المهام الدورية للكرفس أو django-q.

ولكن بالنسبة للحالات البسيطة، يجب أن يكون هذا جيدًا بما فيه الكفاية.

بيان الافراج يتم استنساخ هذه المقالة على: https://dev.to/climentea/how-to-create-a-simple-scheduler-in-django-1o54؟1 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3