обработчик для Python HTTPServer, который использует потоки - PullRequest
0 голосов
/ 16 мая 2011

я хотел бы написать обработчик для автономного сервера, поставляемого с 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 Ответ

0 голосов
/ 16 апреля 2012

Автономный сервер не предназначен для получения неблокирующих сообщений. Из документации класса "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.
...