0

Djangoでは、外部オブジェクトストレージの異なるバケット/コンテナにイメージファイルを格納することは可能ですか?OpenStack Swift?Djangoの複数のストレージコンテナ

RESTサービスリクエストを通じて画像ファイルをアップロードするための適切な方法の作成に関連する問題があります。ユーザーは、名前、説明、所有者IDなどを含む最初のエンドポイントを介して 'Task'インスタンスをPOSTすることができます。Taskには、他のエンドポイントを介して画像をPOSTすることもできます。

画像は、私のケースでは(サーバーは既に存在し、セットアップされていました)、次のように一意のコンテナ/バケットでOpenStack Swiftに保存する必要があります:owner_id_task_id。ユーザーは同じ名前と拡張子を持つが、内容は異なるファイルをアップロードできるということは関連しています。
別の部分もOpenStackの同じコンテナに送信されます。Celeryワーカータスクからファイルをスウィフトします(アップロードされたファイルに基づく処理)。

私の目標は、生のイメージを格納するための実行時コンテナ構造と、後処理されたイメージを動的に作成/オーバーライドすることです。

どのようにこの問題を解決できますか?

ありがとうございました!

+0

その可能性がありますが推奨されています。例えば、Herokuは静的ファイルとメディアファイルにs3を使用するよう提案しています。https://devcenter.heroku.com/articles/s3 このためのdjangoソリューションは、「ホワイトテーション」を使用していますが、静的ファイル用であり、ファイル。 – hansTheFranz

+0

@hansTheFranzより具体的には:OpenStack Swiftに画像をアップロードして、 '{1} _ {2}'形式のformat(user_id、task_id)というユニークなコンテナにしたいと思います。 user_idはRESTリクエストからrequest.user、task_idから取得しました。したがって、コンテナの名前は、たとえば '12_05'または '23_111'のように指定する必要があります。そんなことをすることは可能ですか? – sorryMike

+0

OpenStackのエキスパートではありません私はコンテナの名前ポリシーをどのように管理しているかは分かりませんが、一般的にはあなたが望むように呼び出すことができるはずです。しかし、それはあなたが各ユーザーのコンテナを作成したいと思われる?私はそれがOpenStackのベストプラクティスだとは思わない。あなたが何をしたいのか、なぜ、質問しているのか教えてください。おそらく、別のパスを使用して簡単に実現できるソリューションを取り組んでいるかもしれません。 – hansTheFranz

答えて

1

はい。これは可能です。 FileField.storageを使用して、個々のモデルフィールドで使用するストレージを構成できます。

+0

私の問題の解決策であるかどうかはわかりません。編集した質問を確認してください。 – sorryMike

+0

あなたは解決策を求めていませんでした。あなたはそれが可能かどうか尋ねました。特定の問題がある場合、特定の質問をすると答えが出る可能性が高くなります。 –

+0

はい、あなたは正しいです。最初に私はその問題がDjangoで管理できるかどうか疑問に思っていました:)しかし、あなたが私の問題を解決する方法を知っているなら、それを私と共有してください) – sorryMike