«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как создать простой планировщик в Django

Как создать простой планировщик в Django

Опубликовано 8 ноября 2024 г.
Просматривать:990

How to create a simple scheduler in Django

Если вам нужно запускать функцию каждые X минут/секунд и т. д. для очистки, запуска некоторых операций, вы можете выполнить простой планировщик с помощью модуля потоковой обработки и пользовательского интерфейса django. команды.

Допустим, я хочу вызывать функцию каждые 5 секунд, чтобы публиковать что-то во внешнем API.

В вашем приложении django создайте папку/пакет с именем управление внутри этой папки, создайте еще одну папку с именем команды. В папке команд создайте модуль с именем runposter.py. В итоге у вас получится что-то вроде этой структуры yourapp/management/commands/runposter.py.

В этом коде мы используем поток, который выполняет цикл while до тех пор, пока он не останавливается каждые 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!")

Хорошо, теперь откройте другое окно терминала и запустите runposter python Manage.py. Командный постер, как вы можете видеть, был создан на основе указанного нами имени модуля.

Конечно, для чего-то более сложного я рекомендую использовать rq-scheduler, периодические задачи celery или 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