Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mencipta penjadual mudah dalam Django

Bagaimana untuk mencipta penjadual mudah dalam Django

DDD
DDDasal
2024-10-20 16:16:02684semak imbas

How to create a simple scheduler in Django

Jika anda perlu menjalankan fungsi setiap X minit/saat dsb. untuk melakukan beberapa pembersihan, cetuskan beberapa operasi yang anda boleh lakukan penjadual mudah dengan bantuan modul threading dan django custom cli arahan.

Katakanlah saya mahu menggunakan fungsi setiap 5 saat untuk menyiarkan sesuatu pada API luaran.

Dalam apl django anda buat folder/pakej bernama pengurusan di dalam folder itu buat folder lain bernama arahan. Dalam folder arahan buat modul bernama runposter.py. Pada akhirnya anda akan mempunyai sesuatu seperti struktur ini yourapp/management/commands/runposter.py.

Dalam kod ini, kami menggunakan benang yang menjalankan gelung sementara selagi ia tidak dihentikan setiap 5 saat. Gantikan print("posting") dengan fungsi/logik yang anda mahu jalankan.

# 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!")

Bagus, sekarang buka tetingkap terminal lain dan jalankan python manage.py runposter. Command runposter seperti yang anda lihat telah dicipta daripada nama modul yang telah kami berikan.

Sudah tentu, untuk sesuatu yang lebih kompleks, saya syorkan menggunakan penjadual rq atau tugasan berkala saderi atau django-q.

Tetapi, untuk kes mudah ini sepatutnya cukup baik.

Atas ialah kandungan terperinci Bagaimana untuk mencipta penjadual mudah dalam Django. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn