В моей программе сокетов Python мне иногда нужно прервать ее с помощью Ctrl-C. Когда я это делаю, он закрывает соединение с помощью socket.close()
.
Однако, когда я пытаюсь открыть его снова, мне приходится подождать, кажется, минуту, прежде чем я снова смогу подключиться. Как правильно закрыть розетку? Или это задумано?
python
sockets
connection
errno
Skylerl
источник
источник
$ ps -fA | grep python 501 81211 12368 0 10:11PM ttys000 0:03.12 python -m SimpleHTTPServer $ kill 81211
источник
Если вы используете TCPServer, UDPServer или их подклассы в модуле SocketServer, вы можете установить эту переменную класса (до создания экземпляра сервера):
SocketServer.TCPServer.allow_reuse_address = True
(через SocketServer.ThreadingTCPServer - Невозможно привязать к адресу после перезапуска программы )
Это заставляет init (конструктор):
if self.allow_reuse_address: self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
источник
потому что вы пытаетесь запустить службу на том же порту, который уже запущен.
некоторое время это происходит, потому что ваша служба не останавливается в стеке процессов. ты должен убить их
не нужно ничего устанавливать, это однострочная команда, которая убивает все запущенные процессы python.
для ОС на базе Linux:
Баш:
kill -9 $(ps -A | grep python | awk '{print $1}')
Рыба:
kill -9 (ps -A | grep python | awk '{print $1}')
источник
Для меня сработало простое решение - закрыть Терминал и перезапустить его.
источник
У меня ничего не работало, кроме запуска подпроцесса с этой командой перед вызовом
HTTPServer(('', 443), myHandler)
:kill -9 $(lsof -ti tcp:443)
Конечно, это только для Linux-подобных ОС!
источник
Прежде всего найдите идентификатор процесса Python с помощью этой команды
Вы получите номер pid, указав свой процесс python во втором столбце
Затем убейте процесс с помощью этой команды
kill -9 pid
источник
Получил ту же ошибку:
Выполнены шаги:
1 - использован
$ ps -fA | grep python
2 - завершен весь процесс
3 - закрыт терминал
4 - перезапущен и запущено приложение (mkchromecast).
5 - не получил это сообщение об ошибке.
Есть еще одна проблема. отслеживая это.
источник
запустите команду
пример для колбы:
fuser -k 5000/tcp
Также помните, что эта ошибка возникает, когда вы вставляете ctrl + z. поэтому для завершения используйте ctrl + c
источник