mirror of https://github.com/jumpserver/jumpserver
fix: 修复ws引起的redis连接增加
parent
628012a7ee
commit
9f6e26c4db
|
@ -1,6 +1,6 @@
|
||||||
import threading
|
import threading
|
||||||
import json
|
import json
|
||||||
|
from redis.exceptions import ConnectionError
|
||||||
from channels.generic.websocket import JsonWebsocketConsumer
|
from channels.generic.websocket import JsonWebsocketConsumer
|
||||||
|
|
||||||
from common.utils import get_logger
|
from common.utils import get_logger
|
||||||
|
@ -12,13 +12,14 @@ logger = get_logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class SiteMsgWebsocket(JsonWebsocketConsumer):
|
class SiteMsgWebsocket(JsonWebsocketConsumer):
|
||||||
disconnected = False
|
|
||||||
refresh_every_seconds = 10
|
refresh_every_seconds = 10
|
||||||
|
chan = None
|
||||||
|
|
||||||
def connect(self):
|
def connect(self):
|
||||||
user = self.scope["user"]
|
user = self.scope["user"]
|
||||||
if user.is_authenticated:
|
if user.is_authenticated:
|
||||||
self.accept()
|
self.accept()
|
||||||
|
self.chan = new_site_msg_chan.subscribe()
|
||||||
|
|
||||||
thread = threading.Thread(target=self.unread_site_msg_count)
|
thread = threading.Thread(target=self.unread_site_msg_count)
|
||||||
thread.start()
|
thread.start()
|
||||||
|
@ -48,9 +49,8 @@ class SiteMsgWebsocket(JsonWebsocketConsumer):
|
||||||
user_id = str(self.scope["user"].id)
|
user_id = str(self.scope["user"].id)
|
||||||
self.send_unread_msg_count()
|
self.send_unread_msg_count()
|
||||||
|
|
||||||
while not self.disconnected:
|
try:
|
||||||
subscribe = new_site_msg_chan.subscribe()
|
for message in self.chan.listen():
|
||||||
for message in subscribe.listen():
|
|
||||||
if message['type'] != 'message':
|
if message['type'] != 'message':
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
|
@ -64,7 +64,10 @@ class SiteMsgWebsocket(JsonWebsocketConsumer):
|
||||||
self.send_unread_msg_count()
|
self.send_unread_msg_count()
|
||||||
except json.JSONDecoder as e:
|
except json.JSONDecoder as e:
|
||||||
logger.debug('Decode json error: ', e)
|
logger.debug('Decode json error: ', e)
|
||||||
|
except ConnectionError:
|
||||||
|
logger.debug('Redis chan closed')
|
||||||
|
|
||||||
def disconnect(self, close_code):
|
def disconnect(self, close_code):
|
||||||
self.disconnected = True
|
if self.chan is not None:
|
||||||
|
self.chan.close()
|
||||||
self.close()
|
self.close()
|
||||||
|
|
Loading…
Reference in New Issue