クリーンアップを行うために X 分/秒ごとに関数を実行する必要がある場合、いくつかの操作をトリガーする必要がある場合は、スレッド モジュールと Django カスタム CLI を使用して簡単なスケジューラーを実行できます。コマンド。
5 秒ごとに関数を呼び出して、外部 API に何かを投稿したいとします。
Django アプリで、management という名前のフォルダー/パッケージを作成します。そのフォルダー内に、commands という名前の別のフォルダーを作成します。コマンドフォルダーに、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 manage.py runposter を実行してください。ご覧のとおり、コマンド runposter は指定したモジュール名から作成されました。
もちろん、より複雑な場合は、rq-scheduler、celery 周期タスク、または django-q を使用することをお勧めします。
しかし、単純な場合にはこれで十分です。
以上がDjango で簡単なスケジューラを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。