Я написал тестовый сервер торнадо с загрузчиком, который записывает файл кусками. Теперь я пытаюсь загрузить некоторый файл на сервер через библиотеку запросов и получить ConnectionResetError, если я сделаю запрос без файла, я не получу его.Ошибка загрузки Tornado ConnectionResetError
питона 3,4, 4,1 Торнадо
server.py:
from tornado.ioloop import IOLoop
from tornado.web import Application, RequestHandler, stream_request_body
@stream_request_body
class UploadHandler(RequestHandler):
def prepare(self):
self.file = open('uploaded_file', 'wb')
def data_received(self, chunk):
print(len(chunk))
self.file.write(chunk)
def post(self, *args, **kwargs):
self.file.close()
self.write('UPLOADED')
app = Application([(r'/upload', UploadHandler), ],
debug=True)
if __name__ == '__main__':
app.listen(7777)
IOLoop.current().start()
Вот что я получаю:
>>> import requests
>>> resp = requests.post('http://localhost:7777/upload', files={'file': open('book.pdf', 'rb')})
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/home/dim/env/lib/python3.4/site-packages/requests/api.py", line 109, in post
return request('post', url, data=data, json=json, **kwargs)
File "/home/dim/env/lib/python3.4/site-packages/requests/api.py", line 50, in request
response = session.request(method=method, url=url, **kwargs)
File "/home/dim/env/lib/python3.4/site-packages/requests/sessions.py", line 465, in request
resp = self.send(prep, **send_kwargs)
File "/home/dim/env/lib/python3.4/site-packages/requests/sessions.py", line 573, in send
r = adapter.send(request, **kwargs)
File "/home/dim/env/lib/python3.4/site-packages/requests/adapters.py", line 415, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))
>>> resp = requests.post('http://localhost:7777/upload')
>>> resp.status_code
200
Что я сделал не так? Я прочитал, что это ошибка сервера. self.prepare() выполняется, но self.data_received() и post() не работают.
Извините, я скопировал некорректно. Эта строка 'self.request.body' была нечетной ... Получите ошибку в любом случае – r45i
Хорошо, я добавляю' enable_pretty_logging() 'и получаю' Malformed HTTP-сообщение от 127.0.0.1: Content-Length too long'. Я должен увеличить max_body_size по соображениям – r45i
Да, 'app.listen (7777, max_body_size = 150 * 1024 * 1024)' и он работает =) отлично. Thx, фраза 'В вашем сервере журнала' помогла мне – r45i