2012-02-26 20 views
5

Mam FileField, który korzysta z S3BotoBackend magazynu Django do przesyłania plików audio do Amazon S3. Pliki audio mogą mieć rozmiar do 10 MB, a użytkownik może przesłać wiele plików w tej samej formie. Czas ładowania może być bardzo długi i bloki. Aby przyspieszyć przetwarzanie, pomyślałem o napisaniu niestandardowego mechanizmu przechowywania, który dziedziczy S3BotoBackend i przesyła zadania do kolejki beanstalk przed przesłaniem do S3.Jak przyspieszyć prędkość przesyłania Django FileField?

Czy istnieją łatwiejsze alternatywy, aby przyspieszyć działanie użytkownika?

Odpowiedz

2

Jeśli chcesz przyspieszyć działanie, będziesz chciał, aby Twój serwer był bardziej zaangażowany w obsługę wysyłania. Możesz wyewidencjonować numer Nginx upload module dla Nginx, ale możesz zrobić to samo za pomocą dowolnego serwera sieci Web.

W tym podejściu skonfigurujesz widok, który otrzyma żądanie po pomyślnym przesłaniu pliku przez użytkownika, co może być odpowiednim momentem do umieszczenia w kolejce pliku do przesłania do S3.

Umożliwia to asynchroniczne odbieranie wielu plików od użytkownika i asynchroniczne wysyłanie plików do S3, co powinno obejmować prawie wszystko, co można zrobić, aby poprawić jakość przesyłania plików.