Python 3 HTTPServer: не удается вернуть исключение - PullRequest
0 голосов
/ 26 января 2019

У меня есть следующий веб-сервер, с которым я бы хотел обрабатывать POST-запросы. Если возникает ошибка, я хотел бы отправить ошибку обратно на сервер, который сделал запрос POST, чтобы отобразить его для пользователя. Я также хотел бы напечатать ошибку в выводе веб-сервера.

from http.server import HTTPServer, BaseHTTPRequestHandler
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
    def do_POST(self):
        content_length = int(self.headers['Content-Length'])
        body = self.rfile.read(content_length)
        try:
            result = json.loads(body, encoding='utf-8')
            self.send_response(200)
            self.end_headers()
            response = BytesIO()
            response.write(b'POST Received: ')
            response.write(body)
            self.wfile.write(response.getvalue())
        except Exception as err:
            self.wfile.write('Error: ' + str(err))

httpd = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)
httpd.serve_forever()

Проблема возникает со строкой

self.wfile.write('Error: ' + str(err))

выдает ошибку

TypeError: a bytes-like object is required, not 'str'

Я не очень знаком с HTTPServer, поэтому я не уверен, что здесь происходит. Я также не уверен, в чем разница между response.write и self.wfile.write. Я пытался использовать encode и decode, но всегда получаю очень запутанные сообщения об ошибках. Как распечатать сообщение об ошибке на консоли веб-сервера и вернуть его отправителю POST?

...