Como você implementaria uma funcionalidade de upload de arquivos muito grande com um aplicativo Django e S3?
No meu trabalho paralelo como fotógrafo, tenho vários clientes para os quais tenho necessidade de compartilhar arquivos compactados (zip, tar) com vários gigabytes que contenham os originais e as imagens processadas do evento em questão. Até agora, usamos o Google Drive para isso, no qual eu carregava o arquivo no GD e eles recuperavam e salvavam em uma unidade de armazenamento local. Ocasionalmente, eu limpava a pasta GD, pois os arquivos enviados são espelhados no meu computador por meio do cliente Mac Google Drive. Como o meu Mac possui apenas uma unidade de 256 GB, o espaço é escasso.
Um cliente teve duas falhas no disco rígido nos últimos quatro meses, onde havia zero nos dez anos anteriores em que eu trabalhava com eles. Então eles querem uma solução melhor, e eu já sou desenvolvedor, por que não?
Agora, a questão é se é uma boa idéia que o navegador seja responsável pelo enfileiramento e transporte de um arquivo de mais de 12 gigabytes para o meu servidor, pelo qual passará por alguma verificação de atributo antes de ser transferido para o S3.
Eu posso ver duas opções com isso:
- Use o navegador com um formulário de upload de arquivo para fazer upload de um arquivo com várias partes para o servidor. Após a conclusão, o arquivo será verificado e processado por uma tarefa local do Aipo e, em seguida, carregado em um bucket S3.
- Implemente um comando Django Management para acionar a execução da tarefa local de processamento de arquivos do Celery e use um script Python local usando o Paramiko para carregar o arquivo e acionar a execução do comando de gerenciamento quando o upload for concluído.
Pessoalmente, estou me inclinando para a opção 2, mas gostaria de outras idéias, se possível.