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