如何使用计时器调用函数?

How do I invoke a function with a timer?

如何使用计时器调用函数?

models.py

# Choices
time = [
('1', 'Morning'),
('2', 'Afternoon'),
('3', 'Evening'),
('4', 'Night'),
]

# Model
class Calendar(models.Model):
    user = models.ForeignKey(AUTH_USER_MODEL,on_delete=models.SET_NULL)
    date = models.DateField()
    time = models.CharField(max_length=10, choices=time)
    location = models.CharField(max_length=32)
    conformation = models.BooleanField(default=False)

views.py

class CheckAvailability(APIView):
    permission_classes = [IsAuthenticated]
    def post(self, request):
        date = request.data.get('date')
        time = request.data.get('time')
        location = request.data.get('location')
        user = request.user

        if date and time and location:
            exists, created = Calendar.objects.get_or_create(
                user=user,
                date=date,
                time=time,
                location=location
            )

            if created:
                serializer = CalenderSerializer(exists, context={'request': request})
                t = threading.Timer(60.0, auto_delete(calendar.id), args=None, kwargs=None)
                t.start()
                return Response({'response': 'created', 'result': serializer.data, })


            else:
                return Response({'response': 'Exists'})

def auto_delete(calandar_id):
        calendar_id = calandar_id
        item = Calendar.objects.get(id=calender_id)
        if item.conformation == False:
            item.delete()
            return Response({'response': 'item deleted'})


创建日历对象时,我想在 1 分钟后调用 auto_delete 函数。当调用 post 函数时,auto_delete 函数立即生效。定时器不工作 谁能帮我解决这个问题?

根据下行,

t = threading.Timer(60.0, auto_delete(calendar.id), args=None, kwargs=None)

您正在立即调用该函数,而没有让线程处理它。而是像这样将 arg 传递给计时器..

t = threading.Timer(60.0, auto_delete, args=[calendar.id], kwargs=None)