#python #webserver #mod-pywebsocket
#python #веб-сервер #мод-pywebsocket
Вопрос:
я хотел бы написать обработчик для автономного сервера, поставляемого с pywebsocket (http://code.google.com/p/pywebsocket ), который использует поток. в примере, поставляемом с pywebsocket, обработчик представляет собой просто файл с функцией:
def web_socket_transfer_data(request):
while True:
line = request.ws_stream.receive_message()
if line is None:
return
request.ws_stream.send_message(line)
if line == _GOODBYE_MESSAGE:
return
я попытался добавить поток:
class _Stub(threading.Thread):
def __init__ (self):
threading.Thread.__init__(self)
self._test = 0
def run(self):
while True:
time.sleep(5)
self._test = self._test 1
но сервер выходит из строя без каких-либо комментариев…
итак, как это делается?
спасибо за любые указания.
Ответ №1:
Автономный сервер не предназначен для приема сообщений без блокировки. Из документации класса «MessageReceiver» в msgutil.py (по крайней мере, не при использовании SSL):
Этот класс получает сообщения от клиента.
This class provides three ways to receive messages: blocking, non-blocking, and via callback. Callback has the highest precedence. Note: This class should not be used with the standalone server for wss because pyOpenSSL used by the server raises a fatal error if the socket is accessed from multiple threads.