Пилоны:адрес уже используется при попытке обслуживания
Вопрос
Я использую пилоны и сделал это:Paster Server Development.ini работает на: 5000
Но когда я пытаюсь запустить команду еще раз:Пастер служит development.ini
Я получаю это сообщение:ошибка сокета:[Errno 98] Адрес уже используется.
Есть идеи?
Решение
Обычно это означает, что он все еще работает, но это должно происходить только в том случае, если он находится в режиме демона.После запуска вы получаете командную строку или вам нужно остановить его с помощью Ctrl-C?
Если вы получите командную строку обратно, это режим демона, и вам придется остановить его с помощью
paster server development.ini stop
Если вы остановили это с помощью Ctrl-C (а не Ctrl-Z, конечно), понятия не имею.
Другие советы
Я нашел этот трюк на форуме:
Это уничтожит все программы, прослушивающие порт 5000.
kill -9 `fuser -n tcp 5000`
Насколько я понимаю ваш вопрос, вы запускаете какое-то приложение для прослушивания порта 5000.Затем, не останавливая его (?), вы пытаетесь запустить другой экземпляр для прослушивания того же порта?Если да, то у вас ничего не получится.
Вы всегда можете проверить, какое приложение прослушивает какой номер порта, используя netstat
(как для Windows, так и для UNIX-подобных систем у меня нет опыта работы с другими).
Это также случилось со мной, когда сервер неожиданно умер и не закрыл сокет должным образом.По сути, сокет по-прежнему отображается как открытый в операционной системе, даже если процесс завершился.Я обнаружил, что если я подожду 30-60 секунд, ОС поймет, что связанный процесс умер, и автоматически очистит сокеты.
ваш порт по умолчанию 8080 использует.Вы должны добавить «-p 10000» после команды, чтобы взять порт 10000
естественно netstat
(netstat -an | grep 5000
делает свое дело в Linux).захвачу порт
Однако я нашел другой вопрос с той же ошибкой.
Python [Errno 98] Адрес уже используется
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
По сути, Python занимает слишком много времени, чтобы открыть сокет.
Я перепробовал все ответы, за которые проголосовали, которые существуют здесь, но никто мне не подходит.Но эта команда ниже делает свое дело.
sudo kill $(sudo lsof -t -i:5000)
Это убьет процесс, который прослушивает порт. 5000
.