state api now working
This commit is contained in:
@@ -12,7 +12,7 @@ from backend import app, main_logger
|
||||
|
||||
from apscheduler.schedulers.background import BackgroundScheduler
|
||||
|
||||
from backend.cron.cron_state_checker import async_cron_recorder_checker
|
||||
from backend.cron.cron_state_checker import async_cron_recorder_checker, async_permanent_cron_recorder_checker
|
||||
from backend.websocket.handlers import send_state_update_to_recorders
|
||||
|
||||
cron_log_handler = TimedRotatingFileHandler(app.config.get('CRON_LOG_FILE'), interval=1, when='d', backupCount=3)
|
||||
@@ -42,10 +42,14 @@ def add_default_jobs(sched=None, testing=False):
|
||||
if testing:
|
||||
check_recorder_state_job = sched.add_job(async_cron_recorder_checker.check_object_state, 'interval', seconds=40,
|
||||
id="check_recorder_state_job")
|
||||
check_all_recorders_state_job = sched.add_job(async_permanent_cron_recorder_checker, 'interval', minutes=5,
|
||||
id="check_all_recorders_state_job")
|
||||
|
||||
else:
|
||||
check_recorder_state_job = sched.add_job(async_cron_recorder_checker.check_object_state, 'interval', minutes=2,
|
||||
id="check_recorder_state_job")
|
||||
check_all_recorders_state_job = sched.add_job(async_permanent_cron_recorder_checker.check_object_state, 'interval', minutes=30,
|
||||
id="check_all_recorders_state_job")
|
||||
|
||||
"""
|
||||
Job regularly sending the state to "frontend recorders" through websocket
|
||||
@@ -54,7 +58,7 @@ def add_default_jobs(sched=None, testing=False):
|
||||
lambda: send_state_update_to_recorders(async_cron_recorder_checker.get_current_state()), 'interval', minutes=1,
|
||||
id="send_update_state_to_recorder_job")
|
||||
|
||||
return [check_recorder_state_job, send_update_state_to_recorder_job]
|
||||
return [check_recorder_state_job, send_update_state_to_recorder_job, check_all_recorders_state_job]
|
||||
|
||||
|
||||
def signal_handler(sig, frame):
|
||||
|
||||
@@ -9,7 +9,7 @@ from threading import Lock
|
||||
from typing import Union, Callable, TypeVar, Generic, Set, List
|
||||
|
||||
from backend.models import Recorder
|
||||
from backend.tools.recorder_state_checker import check_capture_agent_state, ping_capture_agent
|
||||
from backend.tools.recorder_state_checker import check_capture_agent_state, ping_capture_agent, check_stream_sanity
|
||||
|
||||
logger = logging.getLogger("lrc.cron.recorder_state")
|
||||
|
||||
@@ -97,10 +97,14 @@ class StateChecker(Generic[T]):
|
||||
object_states[r[2]] = {
|
||||
'id': object_states[r[2]].get('id', None),
|
||||
'msg': ", ".join([s for s in [object_states[r[2]].get('msg', None), r[1]] if s]),
|
||||
'time_stamp': datetime.datetime.now(datetime.timezone.utc).strftime(
|
||||
"%d.%m.%Y - %H:%M:%S %Z"),
|
||||
'state_ok': ok}
|
||||
else:
|
||||
object_states[r[2]] = {'id': object_states[r[2]].get('id', None),
|
||||
'msg': r[1],
|
||||
'time_stamp': datetime.datetime.now(datetime.timezone.utc).strftime(
|
||||
"%d.%m.%Y - %H:%M:%S %Z"),
|
||||
'state_ok': False}
|
||||
except TimeoutError as e:
|
||||
logger.error("Timeout while performing state check func! {}".format(e))
|
||||
@@ -163,3 +167,9 @@ class StateChecker(Generic[T]):
|
||||
|
||||
|
||||
async_cron_recorder_checker = StateChecker([check_capture_agent_state, ping_capture_agent], Recorder)
|
||||
async_permanent_cron_recorder_checker = StateChecker(
|
||||
[check_capture_agent_state, ping_capture_agent, check_stream_sanity], Recorder)
|
||||
|
||||
for r in Recorder.get_all():
|
||||
async_permanent_cron_recorder_checker.add_object_to_state_check(r.id)
|
||||
async_permanent_cron_recorder_checker.check_object_state() # initial check of all recorders
|
||||
|
||||
Reference in New Issue
Block a user