Так что я использую пакет python для микросервиса nameko, который запускает службу с использованием eventlet
и звонит eventlet.monkey_patch()
при импорте.eventlet.monkey_patch() прерывает ipdb в контейнере докера
Я расшифровал, что именно эта часть кода блокирует любые попытки отладки через ipdb
. Консоль ipdb
отображается в терминале, но я ничего не могу напечатать и должен закрыть весь сеанс терминала, чтобы выйти из процесса.
прилипшей консоль выглядит следующим образом:
Как я могу использовать ipdb
с этой функцией?
EDIT: Этот вопрос только, похоже, происходит в контейнере докера.
Вы снабжающих опции '' docker run'', чтобы он подключил вашу консоль и '' stdin'' к контейнеру, чтобы вы могли ввести его? Если бы это был простой '' docker run'', вы бы поставили опцию '' -it''. –
По-видимому, псевдо-tty определяется командой docker-compose. Интерактивная часть, которая, как мне кажется, также дефолтна (или подразумевается «--service-ports»), тем более, что без 'eventlet.monkey_patch()' я могу использовать ipdb в интерактивном режиме из контейнера докера. – steve
Eventlet также разбивает ipython, поэтому я подозреваю, что он имеет какое-то отношение к интерактивности, а не работает на докере или использует ipdb. –