特定のモデルの特定の DateTimeField が datetime.now() の値と等しい/直後にイベントを発生させたいと考えています。これは製品の有効期限をマークするフィールドであるため、有効期限が切れたらすぐにイベントを発生させ、関連するコードを実行したいと考えています。
Djangoでそれを行う方法は?
PSプロジェクトの他の部分でとにかく使用する予定なので、Celeryを使用してそれを行うことはできますか?
特定のモデルの特定の DateTimeField が datetime.now() の値と等しい/直後にイベントを発生させたいと考えています。これは製品の有効期限をマークするフィールドであるため、有効期限が切れたらすぐにイベントを発生させ、関連するコードを実行したいと考えています。
Djangoでそれを行う方法は?
PSプロジェクトの他の部分でとにかく使用する予定なので、Celeryを使用してそれを行うことはできますか?
カスタム管理コマンドを作成してから、毎分実行されるcron ジョブを設定できます。この cron は期限切れのオブジェクトをポーリングし、関連するコードを実行します。
import datetime
from django.core.management.base import BaseCommand
def compute_inactivity():
expired_objects = MyModel.objects.filter(datetime__lte=datetime.datetime.now())
for obj in expired_objects:
#Take the necessary action
class Command(BaseCommand):
def handle(self, **options):
compute_expiry()