From 765c63653d411e091e2252a235da29cc2f3d8d2e Mon Sep 17 00:00:00 2001 From: Beto Dealmeida Date: Wed, 1 May 2019 16:27:21 -0700 Subject: [PATCH] Refactor ConsoleLog --- CONTRIBUTING.md | 13 +++++++++++-- requirements-dev.txt | 1 - setup.py | 1 - superset/cli.py | 33 +++------------------------------ 4 files changed, 14 insertions(+), 34 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cdca9cbe242d1..e620e6afe8b4f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -328,10 +328,19 @@ FLASK_ENV=development flask run -p 8088 --with-threads --reload --debugger #### Logging to the browser console -This feature is only available on Python 3. When debugging your application, you can have the server logs sent directly to the browser console: +This feature is only available on Python 3. When debugging your application, you can have the server logs sent directly to the browser console using the [ConsoleLog](https://github.com/betodealmeida/consolelog) package. You need to mutate the app, by adding the following to your `config.py` or `superset_config.py`: + +```python +from console_log import ConsoleLog + +def FLASK_APP_MUTATOR(app): + app.wsgi_app = ConsoleLog(app.wsgi_app, app.logger) +``` + +Then make sure you run your WSGI server using the right worker type: ```bash -FLASK_ENV=development flask run -p 8088 --with-threads --reload --debugger --console-log +FLASK_ENV=development gunicorn superset:app -k "geventwebsocket.gunicorn.workers.GeventWebSocketWorker" -b 127.0.0.1:8088 --reload ``` You can log anything to the browser console, including objects: diff --git a/requirements-dev.txt b/requirements-dev.txt index 1ef6617b5de87..857b9ad07d09f 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -14,7 +14,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # -console_log==0.2.10 coverage==4.5.3 flake8-commas==2.0.0 flake8-import-order==0.18 diff --git a/setup.py b/setup.py index b97b49ad5b114..87f66ab6763f0 100644 --- a/setup.py +++ b/setup.py @@ -108,7 +108,6 @@ def get_git_sha(): ], extras_require={ 'cors': ['flask-cors>=2.0.0'], - 'console_log': ['console_log==0.2.10'], 'hive': [ 'pyhive[hive]>=0.6.1', 'tableschema', diff --git a/superset/cli.py b/superset/cli.py index 1aff4bd44da4d..a3e2b2ae4b5e8 100755 --- a/superset/cli.py +++ b/superset/cli.py @@ -68,32 +68,8 @@ def debug_run(app, port, use_reloader): ) -def console_log_run(app, port, use_reloader): - from console_log import ConsoleLog - from gevent import pywsgi - from geventwebsocket.handler import WebSocketHandler - - app.wsgi_app = ConsoleLog(app.wsgi_app, app.logger) - - def run(): - server = pywsgi.WSGIServer( - ('0.0.0.0', int(port)), - app, - handler_class=WebSocketHandler) - server.serve_forever() - - if use_reloader: - from gevent import monkey - monkey.patch_all() - run = werkzeug.serving.run_with_reloader(run) - - run() - - @app.cli.command() @click.option('--debug', '-d', is_flag=True, help='Start the web server in debug mode') -@click.option('--console-log', is_flag=True, - help='Create logger that logs to the browser console (implies -d)') @click.option('--no-reload', '-n', 'use_reloader', flag_value=False, default=config.get('FLASK_USE_RELOAD'), help='Don\'t use the reloader in debug mode') @@ -110,9 +86,9 @@ def run(): help='Path to a UNIX socket as an alternative to address:port, e.g. ' '/var/run/superset.sock. ' 'Will override the address and port values. [DEPRECATED]') -def runserver(debug, console_log, use_reloader, address, port, timeout, workers, socket): +def runserver(debug, use_reloader, address, port, timeout, workers, socket): """Starts a Superset web server.""" - debug = debug or config.get('DEBUG') or console_log + debug = debug or config.get('DEBUG') if debug: print(Fore.BLUE + '-=' * 20) print( @@ -121,10 +97,7 @@ def runserver(debug, console_log, use_reloader, address, port, timeout, workers, Fore.YELLOW + ' mode') print(Fore.BLUE + '-=' * 20) print(Style.RESET_ALL) - if console_log: - console_log_run(app, port, use_reloader) - else: - debug_run(app, port, use_reloader) + debug_run(app, port, use_reloader) else: logging.info( "The Gunicorn 'superset runserver' command is deprecated. Please "