2011-08-31 8 views
6

그래서 누군가가 나를 도울 수 있기를 바란다는 Pylons의 파일 업로드에 다소 어려움을 겪고 있습니다. 원래는 here 호가 Pylons의 문제라고 생각했지만 문제는 서버 (예 : 붙여 넣기) 때문이라는 결론을 내 렸습니다. 문제가 발생한 위치를 정확히 추적했지만 확실하지 않습니다. 그것을 해결하는 방법. 동작은 다음과 같습니다. 나는 Pasterons 웹 어플리케이션을 가지고 있는데, 이것은 paster를 통해 서비스하고있다. 응용 프로그램의 한 부분은 사용자가 파일을 시스템에 업로드 할 수있게 해주 며 때로는 크기가 커 (> 50MB) 수 있습니다. 이러한 업로드 중에 서버가 일시적으로 연결을 재설정합니다 (예 : Chrome에서 오류는 "오류 101 (net :: ERR_CONNECTION_RESET) : 연결이 재설정되었습니다."). 은 항상이 아니며 ~의 약 50 %만이 발생합니다. 큰 파일을 가진 시간.(대용량) 파일 업로드시 연결 재설정

이러한 경우 서버는 응용 프로그램 수준까지 POST를 수행하지 않습니다. 예외는 발생하지 않습니다 (적어도 찾을 수 있음). 문제를 cascade.py (특히 httpserver.py에서 호출 된 wsgi_application 메소드)로 좁혔습니다. 후자에서 :

결과 = self.server.wsgi_application (self.wsgi_environ, self.wsgi_start_response) cascade.py의 통화 기능에

는 파일이 기록 될 것으로 보인다 임시 파일. > 0 copy_len 동안

: 관련 루프에서 시작

그런 다음 열린 파일에 하나 덩어리 하나를 기록합니다. 이러한 쓰기는 개별적으로 예외를 throw하지 않습니다. 그러나 서버는 종종 이러한 기록 중 겉으로보기에는 무작위 적으로 (시간이 이것과 상관 관계가없는 것 같음) 단순히 사라질 것입니다. 그래서 만약 내가 감소하고있는 copy_len 크기를 출력하면, 포인트까지 줄이면 서버가 갑자기 '연결 재설정'(또는 적어도 클라이언트가 생각하는 것처럼 보입니다)과 메소드를 보냅니다. (루프가 종료 된 것처럼 0으로되지 않았지만 copy_len이 인쇄되지 않습니다.)

1) 이것은 단지 산발적으로 발생하며, 2) 실제 오류/예외를 추적하는 것처럼 보이지 않습니다. 단지 일종의 ... 죽습니다.

문제가 있다면 필자는 1.7.3, Python 2.7 및 Fedora OS를 붙여 넣습니다. 아무도 무슨 일이 일어나고 있는지, 그리고 어떻게 해결할 수 있는지에 대한 통찰력을 가지고 있습니까? 어떤 도움을 주셔서 대단히 감사합니다.

답변

1

두 아이디어가 ... 마음에 와서 같은 nginx 같은 다른 더 강력한 웹 서버와

  • 테스트. 필요한 경우 동시에 실행할 수 있습니다. 문제가 지속되는지 확인하십시오. 붙여 넣기가 웹 응용 프로그램을 처리 할 수있는 동안 그것은 내가 아는 한 거대한 파일 전송을 처리하기위한 것이 아닙니다.
  • 업로드 중에 Chunked Transfer Encoding을 사용하고 있습니까?
+0

+1 파이썬/파일론 문제보다 웹 서버 문제 일 가능성이 큽니다. – Kekoa

0

우분투 10.04에서 아파치 2.2 + mod_python 3.3을 사용해도 문제가 없습니다. 나는 대용량 파일 (400MB)을 성공적으로 업로드했습니다.

나는 uploader을 사용하여 html 업로드 양식을 작성했습니다.