обработчик для python HTTPServer, который использует потоки

#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.