2014-04-09 2 views
5

Ho un'applicazione django che utilizzava il backend S3BotoStorage per archiviare i file caricati su Amazon s3. Ma nei servizi web api (usando django-tastypie) ci è voluto molto tempo per caricare file su s3. Poiché ci sono stati passaggi di richiesta attraverso il web server e successivamente il back-end di archiviazione di amazon s3.Sistemi di back-end di archiviazione Django multipli

Quindi, veniamo con la soluzione per farli caricare prima sul server Web e implementare le attività di django-celery attraverso i quali i file vengono caricati su amazon s3. È finito e funzionante. Ma dopo questo vogliamo modificare l'URL dei file su URL di posizione di archiviazione sazon amazon. Ma quando proviamo a modificare file_field_obj.storage su s3botostroage. Questo viene ripristinato all'archivio file predefinito come previsto.

Quindi c'è qualche opzione che possiamo modificare il campo di archiviazione di Django Models FileField dopo aver caricato i file su s3. Quindi, nelle impostazioni ci sarà DefaultFileStorage che punta a FileSystemStorage. Ma se i file sono su s3, puntano a posizioni di memoria s3.

+1

Scommetto che creare una classe di archiviazione personalizzata è il modo migliore per andare. La classe personalizzata può riutilizzare il codice da FileSystemStorage e S3BotoStorage. –

+0

Questo può aiutarti: https://djangosnippets.org/snippets/1976/ – gorus

risposta

1

La soluzione esiste già in un app: django-queued-storage

Dovrebbe gestire la creazione di attività di sedano che arrivi tra i backend di memorizzazione.