From 6fef083a7d72c37dc14736a76ee2c38edf776080 Mon Sep 17 00:00:00 2001 From: Calin Crisan Date: Sun, 18 Oct 2015 16:57:57 +0300 Subject: [PATCH] mjpgclient: added a dedicated start_gc() function --- motioneye/mjpgclient.py | 15 ++++++++------- motioneye/server.py | 14 +++++++++++++- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/motioneye/mjpgclient.py b/motioneye/mjpgclient.py index 093c3cd..01186e6 100644 --- a/motioneye/mjpgclient.py +++ b/motioneye/mjpgclient.py @@ -212,7 +212,10 @@ class MjpgClient(iostream.IOStream): def _garbage_collector(): logging.debug('running garbage collector for mjpg clients...') - + + io_loop = ioloop.IOLoop.instance() + io_loop.add_timeout(datetime.timedelta(seconds=settings.MJPG_CLIENT_TIMEOUT), _garbage_collector) + now = datetime.datetime.utcnow() for client in MjpgClient.clients.values(): camera_id = client._camera_id @@ -256,9 +259,6 @@ def _garbage_collector(): continue - io_loop = ioloop.IOLoop.instance() - io_loop.add_timeout(datetime.timedelta(seconds=settings.MJPG_CLIENT_TIMEOUT), _garbage_collector) - def get_jpg(camera_id): if camera_id not in MjpgClient.clients: @@ -299,6 +299,7 @@ def close_all(invalidate=False): MjpgClient.last_erroneous_close_time = 0 -# schedule the garbage collector -io_loop = ioloop.IOLoop.instance() -io_loop.add_timeout(datetime.timedelta(seconds=settings.MJPG_CLIENT_TIMEOUT), _garbage_collector) +def start_gc(): + # schedule the garbage collector + io_loop = ioloop.IOLoop.instance() + io_loop.add_timeout(datetime.timedelta(seconds=settings.MJPG_CLIENT_TIMEOUT), _garbage_collector) diff --git a/motioneye/server.py b/motioneye/server.py index cfa2914..6e27608 100644 --- a/motioneye/server.py +++ b/motioneye/server.py @@ -333,6 +333,13 @@ def start_thumbnailer(): logging.info('thumbnailer started') +def start_mjpg_client_gc(): + import mjpgclient + + mjpgclient.start_gc() + logging.info('mjpg client garbage collector started') + + def parse_options(parser, args): parser.add_argument('-b', help='start the server in background (daemonize)', action='store_true', dest='background', default=False) @@ -362,12 +369,17 @@ def run(): else: start_motion() - start_cleanup() + if settings.CLEANUP_INTERVAL: + start_cleanup() + start_wsswitch() if settings.THUMBNAILER_INTERVAL: start_thumbnailer() + if settings.MJPG_CLIENT_TIMEOUT: + start_mjpg_client_gc() + template.add_context('static_path', settings.BASE_PATH + '/static/') application = Application(handler_mapping, debug=False, log_function=_log_request, -- 2.39.5