2013-07-22 1 views
1

Я хотел бы запустить событие сразу после/после определенного значения DateTimeField в определенной модели, равной значению datetime.now(). Это поле, которое отмечает истечение срока действия продукта, поэтому, как только он истечет, я хочу запустить событие и выполнить соответствующий код.Trigger Действие На основе изменения значения DateTimeField в Django

Как это сделать в 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-сельдерей, которые могут обеспечить более упорядоченную систему. – karthikr

+0

Небольшое количество объектов – Orca

Смежные вопросы