python - 如何让 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 的计数,视图都会等待然后调用任务
推荐阅读
- ios - iOS Swift Only run on the main thread error for app
- tasm - 有谁知道如何使用 TASM 创建 COM 文件?
- .net - 将表存储密钥作为消息放入 Azure 队列
- excel - 宏 Vlookup 多条件类型不匹配错误
- angular - 升级到 angular5+ .. '@angular/router' 不起作用
- angular - Angular 2+ - 使全局变量在值更改时自动更新
- google-app-engine - 由于项目中的数据存储区不可用,App Engine 应用程序超出配额
- android - 复数“一个”不起作用 - 总是使用“其他”资源
- websocket - 在 Google Cloud 上运行 Websocket 客户端
- html - 无法使用 ui.router 获取 url 内容