Django计划删除

时间:2015-07-02 19:26:36

标签: python django

有没有办法在创建后的指定时间后删除模型?基本上,我想保留一个模型只有二十四小时,以便在达到这个持续时间后到期。

1 个答案:

答案 0 :(得分:2)

只需创建一个celery任务即可删除模型。使用post-save信号处理程序触发模型的芹菜删除任务(延迟24小时)(当createdTrue时)。

from celery import shared_task

@shared_task
def delete_model(model_pk):
    try:
        MyModel.objects.get(pk=model_pk).delete()
    except MyModel.DoesNotExist:
        pass
from django.dispatch import receiver
from django.db.models.signals import post_save
from datetime import datetime, timedelta

@receiver(post_save, sender=MyModel)
def model_expiration(sender, instance, created, **kwargs):
    if created:
         delete_model.apply_async(
            args=(instance.pk,), 
            eta=datetime.utcnow() + timedelta(hours=24)
         )