有没有办法在创建后的指定时间后删除模型?基本上,我想保留一个模型只有二十四小时,以便在达到这个持续时间后到期。
答案 0 :(得分:2)
只需创建一个celery任务即可删除模型。使用post-save
信号处理程序触发模型的芹菜删除任务(延迟24小时)(当created
为True
时)。
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)
)