"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Cómo crear un programador simple en Django

Cómo crear un programador simple en Django

Publicado el 2024-11-08
Navegar:217

How to create a simple scheduler in Django

Si necesita ejecutar una función cada X minutos/segundos, etc. para realizar algunas limpiezas, activar algunas operaciones, puede realizar un programador simple con la ayuda del módulo de subprocesos y el cli personalizado de Django. comandos.

Digamos que quiero invocar una función cada 5 segundos para publicar algo en una API externa.

En su aplicación Django, cree una carpeta/paquete llamado administración dentro de esa carpeta, cree otra carpeta llamada comandos. En la carpeta de comandos, cree un módulo llamado runposter.py. Al final tendrás algo como esta estructura yourapp/management/commands/runposter.py.

En este código utilizamos un hilo que ejecuta un bucle while siempre que no se detenga cada 5 segundos. Reemplace print("posting") con la función/lógica que desea ejecutar.

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

Bien, ahora abre otra ventana de terminal y ejecuta python enable.py runposter. El comando runposter, como puede ver, se creó a partir del nombre del módulo que le proporcionamos.

Por supuesto, para algo más complejo recomiendo usar rq-scheduler o celery periodic task o django-q.

Pero, para casos simples, esto debería ser suficiente.

Declaración de liberación Este artículo se reproduce en: https://dev.to/climentea/how-to-create-a-simple-scheduler-in-django-1o54?1 Si hay alguna infracción, comuníquese con [email protected] para eliminar él
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3