Как заставить django спать
У меня есть проект, в котором один клиент регистрирует запрос и некоторые другие клиенты должны ответить, хотят ли они работать с ним или нет в реальном времени проблема в том, что как я могу засыпать потребителя его ждать, пока один из них принял Если я использую time.sleep(), то весь проект будет спать
class ConsulationConsumer(WebsocketConsumer):
def connet(self):
pass
def diconnect(self,code_close):
pass
def receive(self, text_data):
text_data_json = json.loads(text_data)
consultation = text_data_json['message']
consulator=ConsultationOrder.objects.get(id=consultation).lawyer
if(consulator==None):
consulator=0
self.send(text_data=json.dumps({
'message': consulator
}))
Я использовал Celery для решения проблемы таким образом Я использовал apply_async и countdown для решения проблемы таким образом
Я создал задачу celery и внутри цикла for использовал apply_async с обратным отсчетом
for idx,lawyer in enumerate(lawyers):
if(consultation.lawyer):
break
change_offered_lawyer.apply_async((id,lawyer.id),countdown=idx*60)
Таким образом, каждый раз на основе счета idx представление будет ждать, а затем будет вызывать задачу