Итак, у меня довольно неприятная проблема с загрузкой файлов в Pylons, и я надеюсь, что кто-то сможет мне помочь.Первоначально я опубликовал проблему здесь , думая, что это проблема с Pylons, но с тех пор я пришел к выводу, что проблема связана с сервером, т. Е. Вставкой, и я выяснил, где именнопроблема возникает, но я не уверен, как ее решить.Поведение заключается в следующем.У меня есть веб-приложение Pylons, которое я использую через пастера.Одна часть приложения позволяет пользователям загружать файлы в системы, и иногда они могут быть довольно большими (> 50 МБ).Во время таких загрузок сервер время от времени сбрасывает соединение (т. Е. В Chrome появляется сообщение об ошибке «Ошибка 101 (net :: ERR_CONNECTION_RESET): соединение было сброшено.».) Это не всегда происходит, только~ 50% времени с большими файлами.
В этих случаях сервер никогда не передает POST до уровня приложения.Никаких исключений не выдается (по крайней мере, что я могу найти).Я сузил проблему до cascade.py (в частности, метод wsgi_application, вызываемый из httpserver.py).Из последнего:
result = self.server.wsgi_application (self.wsgi_environ, self.wsgi_start_response)
В вызове функция каскада.py, файл кажется записанным во временный файл.Соответствующий цикл начинается с:
, а copy_len> 0:
Затем он записывает фрагменты один за другим в открытый файл.Ни одна из этих записей в отдельности не создает исключение.Тем не менее, сервер часто просто «уходит» во время этих записей, по-видимому, наугад (время, похоже, тоже не коррелирует с этим).Поэтому, если я распечатываю уменьшенный размер copy_len, я наблюдаю, как он уменьшается до некоторой точки, а затем сервер внезапно отправляет «сброс соединения» (или, по крайней мере, клиент так считает) и метод.кажется, что он завершен (copy_len перестает печататься, как если бы цикл был завершен, хотя он не был равен 0).
Я полностью озадачен, так как 1) это происходит только время от времени, и 2) я не могу отследить фактическую ошибку / Исключение - это просто ... умирает.
Если это имеет значение, я использую paste 1.7.3, Python 2.7 и Fedora OS.Кто-нибудь имеет представление о том, что может происходить, и как я мог бы решить эту проблему?Большое спасибо за любую помощь.