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
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:
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)
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)
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,