首页 > 解决方案 > 如何让 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
        }))

标签: pythondjangodjango-channelschannels

解决方案


我使用 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 的计数,视图都会等待然后调用任务


推荐阅读