"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Django에서 간단한 스케줄러를 만드는 방법

Django에서 간단한 스케줄러를 만드는 방법

2024-11-08에 게시됨
검색:767

How to create a simple scheduler in Django

일부 정리를 수행하기 위해 X분/초마다 함수를 실행해야 하는 경우 일부 작업을 트리거하면 스레딩 모듈 및 django 사용자 정의 CLI를 사용하여 간단한 스케줄러를 수행할 수 있습니다. 명령.

외부 API에 무언가를 게시하기 위해 5초마다 함수를 호출하고 싶다고 가정해 보겠습니다.

django 앱에서 해당 폴더 안에 관리라는 폴더/패키지를 만들고 명령이라는 이름의 다른 폴더를 만듭니다. 명령 폴더에 runposter.py라는 모듈을 만듭니다. 결국에는 다음과 같은 구조를 가지게 됩니다. yourapp/management/commands/runposter.py.

이 코드에서는 5초마다 중지되지 않는 한 while 루프를 실행하는 스레드를 사용합니다. 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 prepare.py runposter를 실행하세요. 보시다시피 명령 runposter는 우리가 지정한 모듈 이름으로 생성되었습니다.

물론 더 복잡한 작업에는 rq-scheduler나 celery periodic task 또는 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