2
Я пытаюсь сделать HTTP-сервер в Python3. Для начала я хочу только сервер, обслуживающий один файл JPG. Вот мой код:Обслуживание файлов JPG через wsgiref.simple_server в Python 3 - аргумент «write() должен быть экземпляром байтов»
from wsgiref.simple_server import make_server
def simple_app(environ, start_response):
headers = [('Content-type', 'image/jpeg')]
start_response('200 OK', headers)
data = b''
filename = r'sunset-at-dusk.jpg'
with open(filename, 'rb', buffering=0) as f:
data = f.readall()
print(type(data)) #<class 'bytes'>
return data
httpd = make_server('', 8001, simple_app)
print("Serving on port 8001...")
httpd.serve_forever()
Когда я пытаюсь получить доступ к серверу через HTTP, я получаю следующую ошибку.
127.0.0.1 - - [01/Jun/2016 08:37:43] "GET/HTTP/1.1" 200 0 Traceback (most recent call last): File "C:\Anaconda3\lib\wsgiref\handlers.py", line 138, in run
self.finish_response() File "C:\Anaconda3\lib\wsgiref\handlers.py", line 180, in finish_response
self.write(data) File "C:\Anaconda3\lib\wsgiref\handlers.py", line 266, in write
"write() argument must be a bytes instance" AssertionError: write() argument must be a bytes instance
'sunset-at-dusk.jpg' является допустимым JPG-файлом в той же папке, что и мой скрипт.
Что я делаю неправильно?
Спасибо. Простая вещь, но легко упускать из виду. – JustAC0der