2013-07-22 48 views
1

我想在特定模型中的某個DateTimeField時/之後立即觸發一個事件,該時間等於datetime.now()的值。它是一個標記產品到期的字段,所以一旦它到期,我想發起一個事件並執行一些相關的代碼。觸發基於Django中DateTimeField的值更改的操作

如何在Django中做到這一點?

P.S.我可以用芹菜做到這一點,因爲我打算將它用於項目的其他部分?

回答

1

您可以編寫custom management command,然後設置每分鐘運行一次的cron job。 此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() 
+1

這個比例如何?我有一些負載平衡的Django應用程序服務器。 – Orca

+0

您認爲每分鐘會過期多少個對象?你也可以看看像django-celery這樣的工具,它可以提供更簡化的系統 – karthikr

+0

少量的對象 – Orca