From f9036ebd6fa8301aecbbbafd79087523e83d18a1 Mon Sep 17 00:00:00 2001 From: Miguel Grinberg Date: Sun, 23 May 2021 13:00:09 +0100 Subject: [PATCH] add reloader_options argument to socketio.run() (Fixes #1556) --- flask_socketio/__init__.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/flask_socketio/__init__.py b/flask_socketio/__init__.py index ddb6c4b9..565b627f 100644 --- a/flask_socketio/__init__.py +++ b/flask_socketio/__init__.py @@ -515,7 +515,7 @@ def close_room(self, room, namespace=None): """ self.server.close_room(room, namespace) - def run(self, app, host=None, port=None, **kwargs): + def run(self, app, host=None, port=None, **kwargs): # pragma: no cover """Run the SocketIO web server. :param app: The Flask application instance. @@ -527,8 +527,12 @@ def run(self, app, host=None, port=None, **kwargs): start in normal mode. :param use_reloader: ``True`` to enable the Flask reloader, ``False`` to disable it. + :param reloader_options: A dictionary with options that are passed to + the Flask reloader, such as ``extra_files``, + ``reloader_type``, etc. :param extra_files: A list of additional files that the Flask - reloader should watch. Defaults to ``None`` + reloader should watch. Defaults to ``None``. + Deprecated, use ``reloader_options`` instead. :param log_output: If ``True``, the server logs all incoming connections. If ``False`` logging is disabled. Defaults to ``True`` in debug mode, ``False`` @@ -554,6 +558,9 @@ def run(self, app, host=None, port=None, **kwargs): log_output = kwargs.pop('log_output', debug) use_reloader = kwargs.pop('use_reloader', debug) extra_files = kwargs.pop('extra_files', None) + reloader_options = kwargs.pop('reloader_options', {}) + if extra_files: + reloader_options['extra_files'] = extra_files app.debug = debug if app.debug and self.server.eio.async_mode != 'threading': @@ -583,13 +590,13 @@ def run(self, app, host=None, port=None, **kwargs): if self.server.eio.async_mode == 'threading': try: - import simple_websocket + import simple_websocket # noqa: F401 except ImportError: from werkzeug._internal import _log _log('warning', 'WebSocket transport not available. Install ' 'simple-websocket for improved performance.') app.run(host=host, port=port, threaded=True, - use_reloader=use_reloader, **kwargs) + use_reloader=use_reloader, **reloader_options, **kwargs) elif self.server.eio.async_mode == 'eventlet': def run_server(): import eventlet @@ -619,7 +626,7 @@ def run_server(): log_output=log_output, **kwargs) if use_reloader: - run_with_reloader(run_server, extra_files=extra_files) + run_with_reloader(run_server, **reloader_options) else: run_server() elif self.server.eio.async_mode == 'gevent': @@ -653,7 +660,7 @@ def run_server(): def run_server(): self.wsgi_server.serve_forever() - run_with_reloader(run_server, extra_files=extra_files) + run_with_reloader(run_server, **reloader_options) else: self.wsgi_server.serve_forever()