2012-01-19 6 views
3

내 설정은 Django 1.3/Python 2.7.2/Win Server 2008 R2/IIS 7.5/MS SQL Server 2008 R2입니다. 나는 주요 기능이 업로드 된 파일을 분석하고 보고서를 생성하는 응용 프로그램을 개발 중입니다.django-filetransfers 설정에 도움이 필요합니다.

django-filetransfers에 대한 문서를 통해 읽기, 나는 이것이 내가 (파일 전송이 완료 될 때까지 즉, 양식 기반 파일 업로드가 완전히 모든 장고 응답을 차단 잠시 동안 해결하기 위해 노력했습니다 문제에 대한 해결책이라고 생각 ... 심지어 중간 크기의 파일에 대한 공포).

설명서는 S3 또는 Blobstore 로의 파이핑 업로드에 대해 이야기합니다. 그 결과는 결국 결국 끝날지 모르겠지만 개발 중에는 나 자신이 "가난한 사람의 S3"를 서버에 설치할 수 있을지도 모른다고 생각했습니다. 제어. 이것은 기본적으로 업로드 된 파일을 수신하는 것이 유일한 목적 인 다른 Django 인스턴스 (또는 간단한 ASP.NET 응용 프로그램) 일뿐입니다. 이것은 django-filetransfers와 함께 가능해야하고 Django의 응답 성 (???) 문제를 해결할 수있는 것처럼 들립니다.

하지만이 기능이 일반적으로 어떻게 작동하는지 몇 가지 이해하지 못했습니다. 어쩌면 예제가 도움이 될 것입니다. MyMainDjangoServer 및 MyFileUploadServer가 있다고 가정 해 봅시다. MyMainDjangoServer는 업로드 양식을 포함하여보기를 제공합니다. MyFileUploadServer는 업로드 된 파일을 "catch"합니다.

  • 내 업로드 양식 단지 파일 (들) 이외의 추가 필드를 포함 할 것입니다 ... 나는 MyMainDjangoServer 어떻게 든 여전히 양식 데이터를 얻을 것이다 올바르게 이해 할 뺀 파일 데이터 :/혼란 내 질문은 다음과 같습니다 (기본적으로 : request.POST), 파일 데이터가 MyFileUploadServer로 공유됩니다. 이게 어떻게 작동합니까? MyFileUploadServer에 업로드하는 동안 MyMainDjangoServer가 여전히 차단됩니까?

  • MyFileUploadServer에서 수행해야 할 작업은 양식 요청을 처리하고 request.FILES 데이터를 삭제하는보기/URL이 있다고 가정합니다. 그 밖의 무엇이 일어날 필요가 있습니까? 나머지 양식 데이터는 어떻게됩니까?

  • 이 시나리오에서 어떻게 settings.py를 설정합니까? django-filetransfers 예제는 S3 또는 GAE/Blobstore를 가정하지만 어쩌면 몇 가지 기본 사항을 빠뜨린 것 같습니다.

어떤 조언이나 대답이 감사 ... 이것은 나를 위해 장고의 혼란스럽고 실망스러운 영역입니다.

답변

2

"MyMainDjangoServer가 파일 데이터 (기본적으로 request.POST)를 제외한 해당 양식 데이터를 계속 가져오고 파일 데이터가 MyFileUploadServer로 공유됩니다. 어떻게 작동합니까? MyMainDjangoServer가 업로드 중에 계속 차단됩니까? MyFileUploadServer? "

GAE Blobstore (아마도 S3도 알고 있음)는 success_url을 요구하여 처리합니다. 귀하의 경우 MyFileUploadServer에 파일을 수신하는 MyMainDjangoServer에있는 URL이 업로드가 완료되면 비 파일 양식 데이터를 다시 게시합니다. https://developers.google.com/appengine/docs/python/blobstore/functions 당신은 어떤 형태로이 기능을 다시 만들어야

(아래 참조) :

여기 create_upload_url 방법에서보세요.

"이 시나리오에서 어떻게 settings.py를 설정해야합니까?"

당신은에 prepare_upload 기능을 가진 파일이 될 것이라고 자신 filetransfers 백엔드를 만드는 데 필요한 것

을 현재 앱 엔진 하나를 볼 수 있습니다.
https://github.com/django-nonrel/djangoappengine/blob/develop/storage.py

prepare_upload 메서드는 그냥 위에서 언급 한 GAE create_upload_url 메서드를 래핑합니다.

따라서 settings.py에서 당신은 다음과 같은 것을 가질 것입니다 :

PREPARE_UPLOAD_BACKEND = 'myapp.filetransfers_backend.prepare_upload' 

(즉, 당신의 prepare_upload 함수에 수입 경로) 이미 filetransfers에서 제공하는 것들로 시작할 수 있습니다 나머지 부분

: 파일이되기 때문에이 설정되는 file_field.url에 의존

SERVE_FILE_BACKEND = 'filetransfers.backends.url.serve_file' 
# if you need it: 
PUBLIC_DOWNLOAD_URL_BACKEND = 'filetransfers.backends.url.public_download_url' 

은 (Django docs 참조) 별도의 서버에서 아마 장거리 전화도 writing a custom storage backend을 조사해야합니다. (S3 및 GAE 사례는에서 사용자 정의 Django 스토리지 백엔드를 사용한다고 가정합니다.

관련 문제