tasks.py 1.1 KB

123456789101112131415161718192021222324252627282930
  1. from celery import shared_task
  2. from .models import Files as Files_models
  3. from datetime import datetime, timedelta
  4. from django.utils import timezone
  5. import os
  6. @shared_task
  7. def add(x, y):
  8. return x + y
  9. # 每隔4小时,删除一份文件
  10. @shared_task
  11. def del_file():
  12. # 将当前时间转换为时区感知的时间
  13. now_aware = timezone.make_aware(datetime.now(), timezone.get_current_timezone())
  14. # 比当前时间早4小时的时间
  15. three_hours_ago = now_aware - timedelta(hours=4)
  16. # 找到不存在订单id,并且上传时间比当前时间早4小时的文件数据,将其删除
  17. files_to_delete = Files_models.objects.filter(order_id__isnull=True, create_time__lt=three_hours_ago)
  18. # 创建一个循环语句
  19. for file in files_to_delete:
  20. # 获取文件的绝对路径
  21. file_path = os.getcwd() + file.file_path
  22. try:
  23. # 删除文件
  24. os.remove(file_path)
  25. except OSError as e:
  26. print("Error: %s : %s" % (file_path, e.strerror))
  27. # 删除数据库数据
  28. file.delete()