This is an ApiView from my django project:
class Receive_Payment(APIView): authentication_classes = (TokenAuthentication,) permission_classes = (IsAdminUser,) def get(self, request, cc_number): if Card.objects.filter(cc_num = cc_number).exists(): client = Client.objects.get(client_id = (Card.objects.get(cc_num = cc_number).client)) if not client.is_busy: client.is_busy = True client.save() resp = "successful" else: resp = "client_is_busy" else: resp = "fail" return Response({"response": resp})
As you see, if client.is_busy
is not True
, I’m making it True
in here. But in this situation, I need to client.is_busy = False
after 30 seconds. If I do it under client.save()
code, it delays to response. How can I do it?
Advertisement
Answer
You should consider using timer objects here.
e.g.
import threading def free_up_client(client): client.is_busy = false timer = Theading.timer(30.0, free_up_client, [client])