Twisted — запрос не вернул байты

У меня есть базовое приложение Twister, и я продолжаю получать такие ошибки:

Запрос не вернул байты

Запрос:

Resource:

main. Объект MainPageDispatcher по адресу 0x7f049fa62be0>

Ценность:

'привет'

Везде, даже в примерах официальных документов я вижу, что строка возвращается, но у меня это не работает. Если я закомментирую первый возврат и отправлю байты вместо строки, это работает. Может ли кто-нибудь помочь мне понять, как это работает? Если это должно быть в байтах, то почему официальные руководства возвращают строки?

Мой код:

from twisted.web.server import Site
from twisted.web.static import File
from twisted.web.resource import Resource
from twisted.internet import reactor

class MainPageDispatcher(Resource):
    isLeaf = True
    def __init__(self):
        super().__init__()

    def render_GET(self, request):
        request.setHeader(b"content-type", b"text/html")
        return "hello"
        return bytes("hello", "utf-8")

root = MainPageDispatcher()
factory = Site(root)
reactor.listenTCP(8888, factory)
reactor.run()

person Arrekin    schedule 19.11.2017    source источник
comment
Похоже на портирование Python версии 2 на 3. Twisted требуют байты, я не буду указывать это как ответ, поскольку у меня нет необходимой информации, но если кто-то столкнется с проблемой silimar, просто всегда возвращайте байты (и предполагайте, что официальные документы могут быть в python 2).   -  person Arrekin    schedule 09.12.2017


Ответы (1)


В python3 я использую:

def render_GET(self, request):
    request.setHeader("Content-Type", "text/html; charset=utf-8")
    return "<html>Hello, world!</html>".encode('utf-8')

str.encode('utf-8') возвращает байтовое представление строки Unicode

person Mindaugas Jusis    schedule 18.01.2018
comment
Это сработало для меня! - person Jerry Okafor; 09.01.2021