Соединение сбрасывает на (большой) загрузить файл

Итак, у меня есть довольно неприятная проблема с файлами загрузки в пилонах, которые я надеюсь, что кто-то может помочь мне. Первоначально я опубликовал проблему здесь , думая, что это проблема с пилонами, но я с тех пор пришел к выводу, что проблема связана с сервером, т. Е. Вставить, и я отслеживал именно там Проблема возникает, но я не уверен, как это решить. Поведение выглядит следующим образом. У меня есть веб-приложение Pylons, которое я обслуживаю через Paster. Один кусок приложения позволяет пользователям загружать файлы в системы, а иногда они могут быть довольно большой (> 50 МБ). Во время таких загрунтовых загрузок сервера сбрасывает соединение (т. Е. В Chrome, ошибка чтения «Ошибка 101 (Net :: err_connection_Reset): соединение было сброшено».) Это не всегда ~ 50% времени с большим файлами.

На этих случаях сервер никогда не заканчивает пост до уровня приложения. Никакое исключение не брошено (по крайней мере, что я могу найти). Я сузил проблему до Cascade.py (в частности, метод wsgi_application, вызываемый из httpserver.py). От последнего:

результат = self.server.wsgi_application (self.wsgi_envongir, self.wsgi_start_respons)

в функции Cascade.py, файл, кажется, записан во временном файл. Соответствующий цикл начинается с:

, в то время как copy_len> 0:

Затем он записывает куски один на один к открытому файлу. Ни один из них не пишет индивидуально бросает исключение. Тем не менее, сервер часто просто «уходит» во время этих пишетов, казалось бы, случайным образом (время, кажется, не коррелируют с этим). Итак, если я распечатаю размер копирования_Len, который уменьшается, я наблюдаю, что он уменьшается до точки, а затем сервер внезапно отправляет «сброс соединения» (или, по крайней мере, клиент считает, что он делает это) и метод Похоже, выкисляется (Copy_Len перестает печатать, как будто цикл вышла, хотя это было не в 0).

Я полностью ошеломлен, так как 1) Это происходит только для спорадически, а 2) я не могу отслеживать фактическую ошибку / исключение - это просто вроде ... умирает.

Если это имеет значение, я работаю в пасте 1.7.3, Python 2.7 и Fedora OS. У кого-нибудь есть какое-то понимание того, что может происходить, и как я смогу решить это? Большое спасибо за любую помощь.

6
задан Community 23 May 2017 в 12:19
поделиться