2012-01-19 11 views
3

私の設定は、Django 1.3/Python 2.7.2/Windows Server 2008 R2/IIS 7.5/MS SQL Server 2008 R2です。私は主にアップロードされたファイルを分析してレポートを作成するアプリケーションを開発しています。django-filetransfersの設定の手助けが必要

django-filetransfersのドキュメント上で読んで、私はこれは私が(ファイル転送が終了するまで、すなわち、フォームベースのファイルのアップロードが完全にすべて Djangoの応答をブロックしばらく解決しようとしてきた問題を解決すると信じて...中程度のサイズのファイルでさえ恐怖)。

S3やBlobstoreへのパイピングのアップロードについては、ドキュメンテーションで解説されていますが、最終的には終わるかもしれませんが、開発中に私自身の "poor man's S3"コントロール。これは、基本的にはアップロードされたファイルを受け取ることだけを目的とした別のDjangoインスタンス(または単純なASP.NETアプリケーション)になります。これはdjango-filetransfersで可能でなければならないように思え、Djangoの応答性(???)の問題を解決します。

しかし、私はこれがどのように一般的にどのように機能しているかを理解することができません。おそらく例が役立ちます:私はMyMainDjangoServerとMyFileUploadServerを持っているとしましょう。 MyMainDjangoServerはアップロードフォームを含むビューを提供します。 MyFileUploadServerはアップロードされたファイルを「キャッチ」します。私のアップロードフォームは、単にファイル(複数可)を超えた追加のフィールドが含まれています...私はMyMainDjangoServerは何とかまだそのフォームデータを取得することを正しく理解して

  • 、マイナスファイルデータ:私の質問/混乱は以下の通りです。 (基本的に:request.POST)、ファイルデータはMyFileUploadServerにシャントされますか?これはどのように作動しますか? MyFileUploadServerへのアップロード中にMyMainDjangoServerがまだブロックされますか?

  • 私がMyFileUploadServerで行う必要があるのは、フォームリクエストを処理し、request.FILESデータを吸い取るビュー/ URLがあると仮定します。他に何が起こる必要がありますか?残りのフォームデータはどうなりますか?

  • このシナリオではどのようにsettings.pyを設定しますか? django-filetransfersの例は、S3またはGAE/Blobstoreのいずれかを仮定しているようですが、多分私はいくつかの基本を欠いています。

これは私にとってDjangoの混乱していて困っています。

答えて

2

"MyMainDjangoServerはまだ何らかの形でファイルデータ(基本的にはrequest.POST)を取得していますが、ファイルデータはMyFileUploadServerにシャントされますか?これはどうしますか?MyMainDjangoServerはアップロード中にブロックされますか? MyFileUploadServer? "

GAEブロブストアはおそらくS3も知っていますが、これにはsuccess_urlを入力する必要があります。あなたのケースでは、アップロードが完了するとMyFileUploadServerにファイルを受け取るMyMainDjangoServerのURLが非ファイル形式のデータを再投稿するURLになります。あなたが何らかの形でこの機能を再作成する必要がありhttps://developers.google.com/appengine/docs/python/blobstore/functions

(下記参照):

はここcreate_upload_url方法を見てください。

"このシナリオではどのようにsettings.pyを設定しますか?あなたはそれでprepare_upload機能付きのファイルになり、独自のfiletransfersのバックエンドを作成する必要があるだろう」

あなたがここにApp Engineのいずれかを参照してくださいすることができます。
https://github.com/django-nonrel/djangoappengine/blob/develop/storage.py

prepare_uploadをメソッドは、上記のGAE create_upload_urlメソッドをラップするだけです。

したがって、あなたの設定では、

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を参照します)別のサーバではおそらくDjangoのためにwriting a custom storage backendを調べる必要があります。 (S3とGAEのケースでは、カスタムDjangoストレージのバックエンドはhereです)

関連する問題