удаленная отладка ptvsd из-за ошибки привязки порта сервера dev в Django - PullRequest
0 голосов
/ 05 июня 2019

Процесс Python ограничен привязкой к одному IP-адресу.Поэтому при попытке запустить «python manage.py runserver» после добавления строк pdvsd выдается ошибка.Есть ли способ обойти это?

Traceback (most recent call last):
  File "manage.py", line 27, in <module>
    main()
  File "manage.py", line 14, in main
    ptvsd.enable_attach(address=('0.0.0.0', 18080), redirect_output=True)
  File "/usr/local/lib/python3.7/site-packages/ptvsd/attach_server.py", line 96, in enable_attach
    ptvsd_enable_attach(address)
  File "/usr/local/lib/python3.7/site-packages/ptvsd/_remote.py", line 75, in enable_attach
    patch_multiprocessing=ptvsd.options.multiprocess)
  File "/usr/local/lib/python3.7/site-packages/ptvsd/_vendored/pydevd/pydevd.py", line 2017, in settrace
    wait_for_ready_to_run,
  File "/usr/local/lib/python3.7/site-packages/ptvsd/_vendored/pydevd/pydevd.py", line 2068, in _locked_settrace
    debugger.connect(host, port)  # Note: connect can raise error.
  File "/usr/local/lib/python3.7/site-packages/ptvsd/_vendored/pydevd/pydevd.py", line 914, in connect
    s = start_client(host, port)
  File "/usr/local/lib/python3.7/site-packages/ptvsd/pydevd_hooks.py", line 132, in <lambda>
    _start_client = (lambda h, p: start_client(daemon, h, p))
  File "/usr/local/lib/python3.7/site-packages/ptvsd/_remote.py", line 58, in <lambda>
    start_client=(lambda daemon, h, port: start_daemon()),
  File "/usr/local/lib/python3.7/site-packages/ptvsd/_remote.py", line 50, in start_daemon
    _, next_session = daemon.start_server(addr=(host, port))
  File "/usr/local/lib/python3.7/site-packages/ptvsd/daemon.py", line 161, in start_server
    self._server = create_server(addr.host, addr.port)
  File "/usr/local/lib/python3.7/site-packages/ptvsd/socket.py", line 79, in create_server
    server.bind((host, port))
OSError: [Errno 98] Address already in use

manage.py это

#!/usr/bin/env python
import os
import sys
import dotenv

def main():
    dotenv.read_dotenv(os.path.join(os.path.dirname(os.path.dirname(__file__)), '.app.env'), override=True)
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
    try:
        # for debug
        if os.environ['APP_MODE'] == 'DEBUG':
            import ptvsd
            ptvsd.enable_attach(address=('0.0.0.0', 18080), redirect_output=True)

        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

docker-compose.yml is (abstract)

command: sh -c "./wait-for-it.sh db:5432 && python manage.py runserver 0.0.0.0:$18080"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...