mirror of https://github.com/jumpserver/jumpserver
fix: Redis哨兵切换时导致core和celery组件监听线程异常退出
parent
a2b9a5cee3
commit
949166eaed
|
@ -3,7 +3,6 @@ import time
|
||||||
import socket
|
import socket
|
||||||
import threading
|
import threading
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db.utils import OperationalError
|
|
||||||
|
|
||||||
from common.db.utils import close_old_connections
|
from common.db.utils import close_old_connections
|
||||||
from common.decorator import Singleton
|
from common.decorator import Singleton
|
||||||
|
@ -45,23 +44,23 @@ class BaseTerminal(object):
|
||||||
|
|
||||||
def start_heartbeat(self):
|
def start_heartbeat(self):
|
||||||
while True:
|
while True:
|
||||||
heartbeat_data = {
|
|
||||||
'cpu_load': get_cpu_load(),
|
|
||||||
'memory_used': get_memory_usage(),
|
|
||||||
'disk_used': get_disk_usage(path=settings.BASE_DIR),
|
|
||||||
'sessions': [],
|
|
||||||
}
|
|
||||||
status_serializer = StatusSerializer(data=heartbeat_data)
|
|
||||||
status_serializer.is_valid()
|
|
||||||
status_serializer.validated_data.pop('sessions', None)
|
|
||||||
terminal = self.get_or_register_terminal()
|
|
||||||
status_serializer.validated_data['terminal'] = terminal
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
heartbeat_data = {
|
||||||
|
'cpu_load': get_cpu_load(),
|
||||||
|
'memory_used': get_memory_usage(),
|
||||||
|
'disk_used': get_disk_usage(path=settings.BASE_DIR),
|
||||||
|
'sessions': [],
|
||||||
|
}
|
||||||
|
status_serializer = StatusSerializer(data=heartbeat_data)
|
||||||
|
status_serializer.is_valid()
|
||||||
|
status_serializer.validated_data.pop('sessions', None)
|
||||||
|
terminal = self.get_or_register_terminal()
|
||||||
|
status_serializer.validated_data['terminal'] = terminal
|
||||||
status_serializer.save()
|
status_serializer.save()
|
||||||
time.sleep(self.interval)
|
except Exception:
|
||||||
except OperationalError:
|
|
||||||
close_old_connections()
|
close_old_connections()
|
||||||
|
finally:
|
||||||
|
time.sleep(self.interval)
|
||||||
|
|
||||||
def get_or_register_terminal(self):
|
def get_or_register_terminal(self):
|
||||||
terminal = Terminal.objects.filter(
|
terminal = Terminal.objects.filter(
|
||||||
|
|
Loading…
Reference in New Issue