Пилоны: адрес, который уже используется при попытке обслуживания

Я использую пилоны, и я сделал это: 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 занимает слишком много времени, чтобы открыть сокет.

Другие вопросы по тегам