2009-07-01 2 views
3

Я бегу пилонов, и я сделал это: сервер Пастер development.ini Он работает на: 5000Пилоны: адрес уже используется при попытке служить

Но когда я пытаюсь снова запустить команду: Пастер служить development.ini

Я получаю это сообщение: socket.error: [Errno 98] Адрес уже используется

Любые идеи?

ответ

3

Обычно это означает, что он все еще работает, но это должно произойти только в режиме демона. После того, как вы запустили его, вы получите командную строку, или вам нужно остановить ее с помощью Ctrl-C? не

Если вы получаете командную строку назад это демон режим, и вы должны остановить его с

paster server development.ini stop 

Если вы остановили его с помощью Ctrl-C (а не Ctrl-Z, конечно), у меня нет идея.

2

Как я понимаю ваш вопрос, вы запускаете приложение для прослушивания на порту 5000. Тогда, не останавливая его (?), Вы пытаетесь запустить другой экземпляр для прослушивания на одном и том же порту? Если это так, вам это не удастся.

Вы всегда можете проверить, какое приложение прослушивает какой номер порта, используя netstat (для Windows и UNIX-подобных систем у меня нет опыта с другими).

+0

+1 для информации о netstat. –

1

Это также случилось со мной, когда сервер неожиданно умер и не закрыл его сокет должным образом. По сути, сокет по-прежнему отображается как открытый с операционной системой, хотя процесс скончался. Я обнаружил, что если я буду ждать 30-60 секунд, ОС осознает, что связанный процесс скончался и автоматически очистит сокеты.

0

Используется порт 8080 по умолчанию. вы должны добавить «-p 10000» после команды принять порт 10000

15

Я нашел этот трюк в форуме:

Это убивает все программы прослушивает порт 5000

kill -9 `fuser -n tcp 5000` 
+0

Sneaky, спасибо! – jon

+2

Вы можете сделать то же самое с 'fuser 5000/tcp -k' –

0

естественно netstat (netstat -an | grep 5000 делает трюк на Linux). Будет захвачен порт

Однако я нашел этот другой вопрос с той же ошибкой.

Python [Errno 98] Address already in use

sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 

По сути Python занимает слишком много времени, чтобы открыть сокет.

0

Я пробовал все варианты ответов, которые существуют здесь, но никто не работает для меня. Но эта ниже команда делает трюк.

sudo kill $(sudo lsof -t -i:5000) 

Это убьет процесс, который прослушивает порт 5000.

Смежные вопросы