Форум сайта python.su
Положим, я неправильно завершил работу приложения (сервер для web-сокетов), которое работает на фреймвёрке tornado (через Ctrl+Z).
Пробую запустить приложение повторно, то получаю ошибку:
socket.error: Address already in useСмотрю ps aux и выполняю kill:
$ ps aux |grep chatdemo.pyДалее перезапускаю приложение, но приконнектиться к web-сокету из браузера нельзя. Гугл пишет:
user 9740 0.0 0.3 177312 11036 pts/4 T 19:37 0:00 /usr/bin/python26 ./chatdemo.py
user 17801 0.0 0.0 61200 828 pts/7 S+ 19:57 0:00 grep chatdemo.py
$ kill -9 9740
WebSocket port 6000 blockedДоступа к настройкам сетевого сокета нет (нет возможности установить so_reuseaddr).
Офлайн
SO_REUSEADDR можно установить в программе:
my_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
Офлайн
dimabestу меня нет ссылки на сокет, он где-то в глубине tornado
SO_REUSEADDR можно установить в программе:my_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
Офлайн
> (через Ctrl+Z)
эта команда переводит приложение на паузу, а не вырубает его.
если после вырубания порт занят, то возможно там повис “ацепт”, нужно передать на этот порт что-нибудь, например в браузере нажать F5 (послать запрос)
Офлайн
o7412369815963Браузер и после ctrl+f5 не может приконнектиться к порту.
если после вырубания порт занят, то возможно там повис “ацепт”, нужно передать на этот порт что-нибудь, например в браузере нажать F5 (послать запрос)
Офлайн
> Браузер и после ctrl+f5 не может приконнектиться к порту.
Это правильно, после ctrl+f5 порт свободен?
Офлайн
o7412369815963как бы это сказать:
Это правильно, после ctrl+f5 порт свободен?
sudo netstat -nap | grep 6000возвращает пустоту, порт не видит.
Офлайн
o7412369815963пробовал запустить другой скрипт на этом порту и с другого компа приконнектиться, чтобы получить данные. данные приходят/уходят нормально, скрипт работает.
если после вырубания порт занят, то возможно там повис “ацепт”, нужно передать на этот порт что-нибудь
Офлайн
o7412369815963Вот именно. Напишите в консоли fg, чтобы с паузы снять.
> (через Ctrl+Z)
эта команда переводит приложение на паузу, а не вырубает его.
Офлайн
jcrow, спасибо, ценная информация.
Но это вопрос уже в другом - как же восстановить сокет, чтобы web-сокеты всё-таки начали работать.
Офлайн