diff --git a/bin/docker-entrypoint b/bin/docker-entrypoint index 8cc09a4949..c028ea2470 100755 --- a/bin/docker-entrypoint +++ b/bin/docker-entrypoint @@ -39,6 +39,7 @@ help() { echo "" echo "shell -- open shell" echo "dev_server -- start Flask development server with debugger and auto reload" + echo "debug -- start Flask development server with remote debugger via ptvsd" echo "create_db -- create database tables" echo "manage -- CLI to manage redash" echo "tests -- run tests" @@ -72,6 +73,11 @@ case "$1" in export FLASK_DEBUG=1 exec /app/manage.py runserver --debugger --reload -h 0.0.0.0 ;; + debug) + export FLASK_DEBUG=1 + export REMOTE_DEBUG=1 + exec /app/manage.py runserver --debugger --no-reload -h 0.0.0.0 + ;; shell) exec /app/manage.py shell ;; diff --git a/docker-compose.yml b/docker-compose.yml index e01be5bfd1..b1049ac4fc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,6 +10,7 @@ services: - redis ports: - "5000:5000" + - "5678:5678" volumes: - ".:/app" environment: diff --git a/redash/__init__.py b/redash/__init__.py index d5ba60e094..853f3664ec 100644 --- a/redash/__init__.py +++ b/redash/__init__.py @@ -22,6 +22,12 @@ __version__ = '6.0.0' +import os +if os.environ.get("REMOTE_DEBUG"): + import ptvsd + ptvsd.enable_attach(address=('0.0.0.0', 5678)) + + def setup_logging(): handler = logging.StreamHandler(sys.stdout if settings.LOG_STDOUT else sys.stderr) formatter = logging.Formatter(settings.LOG_FORMAT) diff --git a/requirements_dev.txt b/requirements_dev.txt index d0332fb2c1..5bb09cfe90 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -8,3 +8,4 @@ mock==2.0.0 pymongo[tls,srv]==3.6.1 botocore==1.12.85 PyAthena>=1.0.0 +ptvsd==4.2.3