Member 13763472 Ответов: 1

Oserror: [winerror 10048] обычно разрешается только одно использование каждого адреса сокета (протокол/сетевой адрес/порт).


у меня есть этот простой sript:

я получаю эту ошибку, когда запускаю его:
OSError: [WinError 10048] обычно разрешается только одно использование каждого адреса сокета (протокол/сетевой адрес/порт).

Что я уже пробовал:

def startproxy():
    PORT = 8000

    Handler = http.server.SimpleHTTPRequestHandler

    httpd = socketserver.TCPServer(("", PORT), Handler)

    httpd.serve_forever()

1 Ответов

Рейтинг:
2

Jochen Arndt

httpd.serve_forever()
После запуска служба будет работать вечно, пока вы не завершите сеанс. При запуске другого экземпляра скрипта запущенная служба все еще открывает порт прослушивания, так что попытка открыть его отклоняется с ошибкой 10048 / WSAEADDRINUSE.

Если вы хотите выполнить сценарий снова, вы должны подать сигнал запущенной службе, чтобы она остановилась и закрыла сокет. Это требует реализации вашей собственной версии serve_forever() который может выйти из сервисного цикла по какому-то сигналу и закрыть розетку. Смотрите также эту тему SO: python - как остановить BaseHTTPServer.serve_forever() в подклассе BaseHTTPRequestHandler? - переполнение стека[^]