Errno 32 Сломанный канал, Errno 107 Транспортная конечная точка не подключена Python-сокет
Мой TCP-сервер написан на Qt 4.7, хорошо работает с TCP-клиентом, также написанным на Qt 4.7.
Я пытаюсь подключиться и общаться с сервером с клиентом, написанным на Python 2.7.3. Я запускаю процесс сервера через запрос apache http с subprocess.call(path_to_server)
, Я использую mod_wsgi 3.3 и django 1.4.
Соединение установлено без проблем. Я получаю [Errno 32] Broken pipe
исключение на socket.send()
случайно (я могу спамить одно и то же сообщение 10 раз, и оно будет отправлено 0-10 раз). То же самое происходит с socket.shutdown()
& socket.close()
, Я могу спам отключить команду, и она будет случайным образом отключаться, в противном случае получая [Errno 107] Transport endpoint is not connected
исключение.
netstat -nap говорит, что соединение установлено.
Когда я пытаюсь запустить тот же клиентский скрипт с использованием оболочки python 2.7, все работает нормально.
Что мне здесь не хватает?
EDIT
Все работает на Windows 7, работает та же конфигурация apache, mod_wsgi, python, django. TCP-сервер также совместим с Windows. Ошибка происходит на centos6.2 32bit.
1 ответ
Мне нужно было установить следующие настройки apache:KeepAlive On
MaxKeepAliveRequests 0
KeepAliveTimeout 5
Я буду дальше исследовать проблему и посмотреть, если это правильное решение.