Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Как восстановить работу сокета после tornado? [RSS Feed]

#1 Ноя. 22, 2011 17:15:56

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Как восстановить работу сокета после tornado?

Положим, я неправильно завершил работу приложения (сервер для web-сокетов), которое работает на фреймвёрке tornado (через Ctrl+Z).
Пробую запустить приложение повторно, то получаю ошибку:

socket.error: Address already in use
Смотрю ps aux и выполняю kill:
$ ps aux |grep chatdemo.py
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
Далее перезапускаю приложение, но приконнектиться к web-сокету из браузера нельзя. Гугл пишет:
WebSocket port 6000 blocked
Доступа к настройкам сетевого сокета нет (нет возможности установить so_reuseaddr).

Как починить сокет, чтобы приложение стартовало и могло работать?



Офлайн

#2 Ноя. 22, 2011 18:00:19

dimabest
От:
Зарегистрирован: 2009-02-12
Сообщения: 253
Репутация: +  0  -
Профиль   Отправить e-mail  

Как восстановить работу сокета после tornado?

SO_REUSEADDR можно установить в программе:

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



Офлайн

#3 Ноя. 22, 2011 18:03:57

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Как восстановить работу сокета после tornado?

dimabest
SO_REUSEADDR можно установить в программе:
my_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
у меня нет ссылки на сокет, он где-то в глубине tornado



Офлайн

#4 Ноя. 22, 2011 19:22:34

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Как восстановить работу сокета после tornado?

> (через Ctrl+Z)
эта команда переводит приложение на паузу, а не вырубает его.

если после вырубания порт занят, то возможно там повис “ацепт”, нужно передать на этот порт что-нибудь, например в браузере нажать F5 (послать запрос)

Офлайн

#5 Ноя. 23, 2011 07:07:13

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Как восстановить работу сокета после tornado?

o7412369815963
если после вырубания порт занят, то возможно там повис “ацепт”, нужно передать на этот порт что-нибудь, например в браузере нажать F5 (послать запрос)
Браузер и после ctrl+f5 не может приконнектиться к порту.
Я не знаю, что значит “ацепт повис”, но понятно, что с сокетом что-то не так. Есть ли возможность сбросить сокет, не создавая дополнительных программ.
Т.е. чтобы перед стартом цикла сервера вебсокетов, я мог сделать в своей программе какие-то проверки и как-то почистить целевой сокет?



Офлайн

#6 Ноя. 23, 2011 15:40:44

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Как восстановить работу сокета после tornado?

> Браузер и после ctrl+f5 не может приконнектиться к порту.
Это правильно, после ctrl+f5 порт свободен?

Офлайн

#7 Ноя. 23, 2011 15:52:38

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Как восстановить работу сокета после tornado?

o7412369815963
Это правильно, после ctrl+f5 порт свободен?
как бы это сказать:
sudo netstat -nap | grep 6000
возвращает пустоту, порт не видит.

Программа стартует, т.е. порт “как будто работает”. Но из браузера достучаться невозможно.

На порту 5001 программа запускается и браузер коннектится.



Офлайн

#8 Ноя. 23, 2011 16:37:20

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Как восстановить работу сокета после tornado?

o7412369815963
если после вырубания порт занят, то возможно там повис “ацепт”, нужно передать на этот порт что-нибудь
пробовал запустить другой скрипт на этом порту и с другого компа приконнектиться, чтобы получить данные. данные приходят/уходят нормально, скрипт работает.
но к серверу web-сокетов приконектиться по прежнему нельзя.



Офлайн

#9 Ноя. 23, 2011 17:49:27

jcrow
От:
Зарегистрирован: 2011-10-31
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Как восстановить работу сокета после tornado?

o7412369815963
> (через Ctrl+Z)
эта команда переводит приложение на паузу, а не вырубает его.
Вот именно. Напишите в консоли fg, чтобы с паузы снять.




Подпись - это небольшая приписка (хи-хи).

Офлайн

#10 Ноя. 23, 2011 17:57:48

axe
От:
Зарегистрирован: 2008-08-07
Сообщения: 256
Репутация: +  0  -
Профиль   Отправить e-mail  

Как восстановить работу сокета после tornado?

jcrow, спасибо, ценная информация.
Но это вопрос уже в другом - как же восстановить сокет, чтобы web-сокеты всё-таки начали работать.



Офлайн

  • Начало
  • » Web
  • » Как восстановить работу сокета после tornado?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version