import json # from update.views import get_cinema_update_status from channels.generic.websocket import WebsocketConsumer from django_redis import get_redis_connection class UpdateConsumer(WebsocketConsumer): def connect(self): self.accept() self.send('你已经连接成功') def receive(self, text_data=None, bytes_data=None): redis_conn = get_redis_connection() if text_data is None: self.send('你发了啥') else: data = json.loads(text_data) # cinema_update_status = get_cinema_update_status() if data.get('msg', False): if data['msg'] == 'ping': self.send(json.dumps({'msg': 'pong'})) if data.get('finish', False): ip = data['finish'] redis_key = f'cinema_update_status_{ip}' if redis_conn.exists(redis_key): redis_conn.delete(redis_key) data = json.loads(redis_conn.get(redis_key)) print('ws任务完成消息', data) if data.get('ip', False): ip = data['ip'] redis_key = f'cinema_update_status_{ip}' # print('ws发送消息前', cinema_update_status) data = json.loads(redis_conn.get(redis_key)) print('ws发送消息前', data) self.send(json.dumps({'status': {'ip': ip, 'result': data}})) else: self.send(text_data)