Отладка Python в vscode заканчивается через 5 секунд бездействияPython

Программы на Python
Ответить
Anonymous
 Отладка Python в vscode заканчивается через 5 секунд бездействия

Сообщение Anonymous »

Я использую Macbook Pro M4 Max, Python 3.9.20 и работаю в среде conda. Я использую vscode для отладки программы, но при отладке дочерний процесс умирает через 5 секунд бездействия (точка останова длится всего 5 секунд):
моя программа на Python запускается с использованием скрипта launch_proxy.py, который запускает экземпляр uvicorn, обслуживающий мой API.

Код: Выделить всё

import uvicorn
if __name__ == "__main__":
workers = 6
uvicorn.run("api.detection_proxy:app", host="0.0.0.0", port=8184,workers=workers, reload=workers == 1, proxy_headers=True, forwarded_allow_ips="*")
и файл launch.json в vscode:

Код: Выделить всё

{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "debugpy",
"stopOnEntry": false,
"request": "launch",
"program": "launch_proxy.py",
"console": "integratedTerminal",
"justMyCode": false,
"cwd": "${workspaceFolder}/ppl_server",
"env": {
"DYLD_LIBRARY_PATH": "/opt/homebrew/lib/postgresql@14/:$DYLD_LIBRARY_PATH",
"PYDEVD_USE_FRAME_EVAL": "NO",
"PYDEVD_TIMEOUT": "999999",
"PYDEVD_DEBUG_LOG_DIR": "/tmp/debugpy_logs"
},
}
]
}
Программа работает нормально
Но когда она достигает точки останова, если вы не сделаете шаг вперед или шаг в течение 5 секунд после достижения этой точки останова, дочерний процесс умирает и перезапускается, оставляя меня с пустым ответом и без какой-либо отладки.
Как предполагает мой файл launch.json, я перепробовал множество параметров и конфигураций, чтобы обойти 5 секунд, я даже пытался прослушивание любого сигнала в файл launch_proxy.py следующим образом:

Код: Выделить всё

import signal
import sys

def signal_handler(sig, frame):
print(f"Received signal: {sig}")
sys.exit(0)

signal.signal(signal.SIGTERM, signal_handler)
signal.signal(signal.SIGINT, signal_handler)

#this part is to print something that's how i knew a new child process has spawned
import os
print("PYDEVD_TIMEOUT:", os.environ.get("PYDEVD_TIMEOUT"))
print("PYDEVD_USE_FRAME_EVAL:", os.environ.get("PYDEVD_USE_FRAME_EVAL"))
print("DYLD_LIBRARY_PATH:", os.environ.get("DYLD_LIBRARY_PATH"))
Обработчик сигнала ничего не печатает, когда дочерний процесс умирает.
Я протестировал обработчик сигнала, введя ctrl + c, и вижу, что он печатает полученный сигнал 15
Я должен отметить, что аналогичная установка с теми же версиями пакетов pip отлично работает на моем ноутбуке с Windows

Подробнее здесь: https://stackoverflow.com/questions/792 ... inactivity
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»