クリーンアップを行うために X 分/秒ごとに関数を実行する必要がある場合、いくつかの操作をトリガーする必要がある場合は、スレッド モジュールと Django カスタム CLI を使用して単純なスケジューラを実行できます。コマンド。
5 秒ごとに関数を呼び出して、外部 API に何かを投稿したいとします。
django アプリで、management という名前のフォルダー/パッケージを作成し、そのフォルダー内に command という名前の別のフォルダーを作成します。コマンドフォルダーに、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 を使用することをお勧めします。
ただし、単純な場合にはこれで十分です。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3