>백엔드 개발 >파이썬 튜토리얼 >Django에서 간단한 스케줄러를 만드는 방법

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

DDD
DDD원래의
2024-10-20 16:16:02724검색
How to create a simple scheduler in Django외부 API에 무언가를 게시하기 위해 5초마다 함수를 호출하고 싶다고 가정해 보겠습니다.

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

이 코드에서는 5초마다 중지되지 않는 한 while 루프를 실행하는 스레드를 사용합니다. print("posting")을 실행하려는 함수/로직으로 바꾸세요.

좋습니다. 이제 다른 터미널 창을 열고 pythonmanage.py runposter를 실행하세요. 보시다시피 runposter 명령은 우리가 지정한 모듈 이름으로 생성되었습니다.

물론 더 복잡한 작업에는 rq-scheduler나 celery periodic task 또는 django-q를 사용하는 것이 좋습니다.
# 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!")

그러나 간단한 경우에는 이 정도면 충분합니다.

위 내용은 Django에서 간단한 스케줄러를 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.