2012-05-25 4 views
4

CentOS에서 실행중인 Django/uwsgi/nginx 스택이 있습니다. django (1GB 이상)에 대용량 파일을 업로드 할 때 /tmp에 임시 파일을 만들 것을 기대하며 업로드가 진행됨에 따라 파일 크기가 커지는 것을 지켜 볼 수 있어야합니다. 그러나 나는 그렇지 않습니다. ls -lah /tmp에는 새 파일이 생성되거나 크기가 변경되지 않습니다. 심지어 내 settings.py에 명시 적으로 그 FILE_UPLOAD_TEMP_DIR = '/tmp'하지만 아직 아무것도 지정했습니다.django는 임시 업로드 파일을 어디에 저장합니까?

임시 파일이 저장된 위치를 추적하는 데 도움이되었습니다. 진행중인 커다란 업로드가 있는지 확인하기 위해이 파일이 필요합니다.

+0

웹 서버에 따라 다릅니다. 요청에 파일 내용이 있습니다. request.read()를 호출하여 내용을 가져올 수 있습니다. 자동으로 장고에는 해당 파일을 다시 "사용 가능"하게 만드는 파서가 있습니다. – santiagobasulto

+0

제가 언급했듯이 웹 서버는 nginx입니다. Django는 업로드 된 파일을 특별히 처리합니다. 아래 stevedbrown의 답변 링크를 참조하십시오. 그리고 내 질문은 * 어디 임시 파일입니다 *. –

답변

4

이들은 시스템의 임시 디렉토리에 저장됩니다. https://docs.djangoproject.com/en/dev/topics/http/file-uploads/?from=olddocs에서 :

당신이 업로드 된 파일을 저장하기 전에 업로드 된 데이터가

저장되어있는 데이터가 어딘가에 저장해야합니다.

기본적으로 업로드 된 파일이 2.5MB보다 작 으면 Django 은 업로드의 전체 내용을 메모리에 보관합니다. 즉, 파일을 저장하는 은 메모리에서 읽기와 디스크 에 쓰기 만하므로 매우 빠릅니다.

그러나 업로드 된 파일이 너무 크면 장고는 디렉토리에 저장된 임시 파일에 업로드 파일을 씁니다. 유닉스와 같은 플랫폼에서 이것은 장고가 에 /tmp/tmpzfp6I6.upload와 같은 파일을 생성 할 것을 기대할 수 있음을 의미합니다. 업로드가 충분히 큰 경우 Django 이 디스크로 데이터를 스트리밍하므로이 파일의 크기가 커지는 것을 볼 수 있습니다.

이러한 세부 사항 - 2.5 메가 바이트;/tmp; 등등 -은 단순히 "합리적인 기본값"입니다. 맞춤 설정 방법 또는 완전히 업로드 동작을 대체하는 방법에 대한 자세한 내용을 읽어보세요.

또한이 경우에만 일어나는 주어진 크기 후 메모리로 업로드 될 것이라는 파일 바이트 2.5MB

FILE_UPLOAD_MAX_MEMORY_SIZE 최대 크기 기본값. FILE_UPLOAD_MAX_MEMORY_SIZE보다 큰 파일은 디스크로 스트리밍됩니다.

기본값은 2.5 메가 바이트입니다.

+0

정보 주셔서 감사합니다. 불행하게도, 내가 말했듯이'ls -lah/tmp'는 업로드가 진행되는 동안 생성되는 임시 파일을 보여주지 않기 때문에 내 질문에 답하지 못한다. –

+1

또한 프로세스 (사용자, 로그인 한 사용자 만이 아님)가/tmp 폴더에 대한 쓰기 권한이 있는지 또는 사용자가 지시하는 위치에 있는지 확인해야합니다. – TimH

4

Django 1.4.1을 사용하는 OS X 시스템에서 이것을 추적했습니다. 임시 파일, django.core.files.temp을 사용하여 만들어집니다 장고/코어/파일/uploadedfile.py에서

는 실행중인 않으면이 단순히 파이썬의 표준 tempfile.NamedTemporaryFile를 반환 임시 파일

from django.core.files import temp as tempfile 

로 가져 Windows에서.

이 TEMPDIR의 위치를 ​​확인하려면, 당신은 쉘이 명령을 실행할 수 있습니다

python -c "import tempfile; print tempfile.gettempdir()" 

을 내 시스템에 지금은 출력은/var/폴더/9V/npjlh_kn7s9fv5p4dwh1spdr0000gn/T, 어디 인 I 내 임시 업로드 파일을 찾았습니다.

관련 문제