Refactor http.py to use SqliteQueueDatabase instead of SqliteDatabase and add retry interval for fetching latest frame

This commit is contained in:
Sergey Krashevich 2023-07-06 20:17:41 +03:00
parent baf671b764
commit ac2beb13eb
No known key found for this signature in database
GPG Key ID: 625171324E7D3856

View File

@ -24,7 +24,8 @@ from flask import (
make_response,
request,
)
from peewee import DoesNotExist, SqliteDatabase, fn, operator
from peewee import DoesNotExist, fn, operator
from playhouse.sqliteq import SqliteQueueDatabase
from playhouse.shortcuts import model_to_dict
from tzlocal import get_localzone_name
@ -49,7 +50,7 @@ bp = Blueprint("frigate", __name__)
def create_app(
frigate_config,
database: SqliteDatabase,
database: SqliteQueueDatabase,
stats_tracking,
detected_frames_processor,
storage_maintainer: StorageMaintainer,
@ -1099,10 +1100,13 @@ def latest_frame(camera_name):
frame = current_app.detected_frames_processor.get_current_frame(
camera_name, draw_options
)
retry_interval = float(
current_app.frigate_config.cameras.get(camera_name).ffmpeg.retry_interval or 10
)
if frame is None or datetime.now().timestamp() > (
current_app.detected_frames_processor.get_current_frame_time(camera_name)
+ 10
+ retry_interval
):
if current_app.camera_error_image is None:
error_image = glob.glob("/opt/frigate/frigate/images/camera-error.jpg")