Простой веб-сервер зависает при запуске - PullRequest
0 голосов
/ 26 февраля 2012

Для удобства я создал веб-сервер, который обрабатывает несколько запросов с помощью потоков, однако теперь он зависает при запуске программы, и я просто не могу понять, почемуОн никогда не достигает стадии печати («Подключен», адрес).Любая помощь и объяснения будет принята с благодарностью.

class Connect(threading.Thread):

def __init__ (self, connection):
    self.clientsocket = connection
    threading.Thread.__init__(self)

def run(self):
    stream = connection.makefile(mode="rw", buffering=1, encoding="utf-8")
    firstLine = stream.readline().split(" ")
    hList = []
    method = firstLine[0]
    path = firstLine[1]
    line = stream.readline().strip()

    while line != "":
        hList.append(line.split(":", 1))
        line = stream.readline().strip()

    if method != 'GET':
        stream.write("HTTP/1.0 405 Unsupported\n\nUnsupported")
    else:
        stream.write("HTTP/1.0 200 Success\n")
        stream.write("Content-type: text/plain\n")
        stream.write("\n")
        stream.write(str(firstLine) + '\n')

        for header in hList:
            stream.write(str(header) + "\n")

    stream.close()
    connection.close()
    return path == "/stop"

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('', 9999))
s.listen(1)

while 1:
    connection, address = s.accept()
    print('Connected by', address),
    Connect(connection).start()

Приветствия

1 Ответ

1 голос
/ 27 февраля 2012

Вы используете свой пример с Python 2 вместо Python 3? В Python 2 socket.makefile нет аргумента ключевого слова buffering. Ваш пример отлично работает для меня в Python 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...