maria-quiteria icon indicating copy to clipboard operation
maria-quiteria copied to clipboard

Adicionar checksum a todos os arquivos

Open anapaulagomes opened this issue 3 years ago • 9 comments

anapaulagomes avatar Mar 27 '21 14:03 anapaulagomes

Estava pensando em usar algo do tipo:

>>> import hashlib
>>> hashlib.md5(open('filename.txt','rb').read()).hexdigest()
'd41d8cd98f00b204e9800998ecf8427e'

No caso, iremos adicionar o checksum no modelo File, confere?

geraldo-castro avatar Sep 08 '21 12:09 geraldo-castro

Manda ver, @geraldo-castro! Isso mesmo. A coluna já existe, só precisamos gerar o checksum e salvar lá. Talvez isso possa ser feito na task de backup do arquivo (onde baixamos arquivo pra mandar pro S3).

anapaulagomes avatar Sep 08 '21 16:09 anapaulagomes

Show! Já vou cuidar nisso! @anapaulagomes cê acha que devemos fazer uma migration para criar/calcular o checksum dos registros já adicionados ao banco? Teríamos que baixar todos os arquivos novamente apenas pra fazer o checksum, acredito eu...

OBS: Desculpe a confusão com as contas... esse é meu github pessoal, o outro @geraldo-castro, é do trabalho. Acabo confundindo as vezes. 😅

exageraldo avatar Sep 08 '21 20:09 exageraldo

Prefiro que não porque temos em torno de 500 mil arquivos. Aumentaria os custos de baixar esses arquivos da AWS etc.

On Wed, 8 Sep 2021, 22:13 Geraldo Castro, @.***> wrote:

Show! Já vou cuidar nisso! @anapaulagomes https://github.com/anapaulagomes cê acha que devemos fazer uma migration para criar/calcular o checksum dos registros já adicionados ao banco? Teríamos que baixar todos novamente, apenas pra criar, acredito eu...

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/DadosAbertosDeFeira/maria-quiteria/issues/309#issuecomment-915537605, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAOP3LU43QT7FGHIBAC7II3UA67WNANCNFSM4Z47GOBA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

anapaulagomes avatar Sep 08 '21 21:09 anapaulagomes

@anapaulagomes eu comecei a implementar e gostaria de ver umas coisas com você. fiz algumas alterações, queria ver com você se faz sentido:

  • dando uma olhada na documentação do metodo que nós usamos para subir os arquivos (put_object), vi que o argumento Body aceita bytes também, o que nos possibilita de criar um "blob" e enviar, o arquivo existindo apenas em tempo de execução.
  • Já que nós conseguimos enviar o arquivo sem ter que salvar/armazenar em algum canto temporário, não precisamos mais das manipulações de arquivos durante o envio (ou precisamos?)
  • Estou criando o checksum a partir da resposta da requisição que fazemos para baixar o arquivo.

Link para essa primeira ideia.

Eu não testei propriamente ainda porque não tenho credenciais da AWS, mas já estou providenciando isso!

exageraldo avatar Sep 10 '21 01:09 exageraldo

Massa @exageraldo! Acho que é uma boa opção. Só temos que fazer alguns testes porque alguns arquivos podem ser bem grandes (alguns de licitação, por exemplo, chegando a 2GB) e isso pode gerar um problema de memória.

anapaulagomes avatar Sep 10 '21 05:09 anapaulagomes

Consegui minha conta! 🥳 🎉 Preciso configurar o S3 de alguma forma especifica? É preciso mudar a variavel de ambiente ENABLE_SIGNAL_FOR_FILE_TASKS pra verdadeiro? Cê poderia informar as configurações do servidor? (Não tem problema caso não possa) A ideia é só pra tentar criar um ambiente mais parecido com o real. 😄

exageraldo avatar Sep 12 '21 03:09 exageraldo

Fora as configurações do .env, acredito que não. Pra evitar conectar no S3 direto, criei uns stubs que interagem com o sistema de arquivos local. Não sei o que tu tá pensando mas talvez fosse uma ideia.

Sim, tem que habilitar essa variável de ambiente. No momento está desabilitada porque estamos tendo problemas com as configurações do S3 (Gomex está trabalhando nisso então acredito que nos próximos dias já esteja resolvido).

anapaulagomes avatar Sep 12 '21 14:09 anapaulagomes

Minha ideia é de usar o cliente do S3 pra enviar o arquivo de verdade, pra saber se funciona como esperamos enviando o arquivo que está em memória, e não no arquivo, e consequentemente testar se o checksum tá funcionando como deveria. Caso o envio não funcione, vou começar a pensar em outra abordagem.

exageraldo avatar Sep 13 '21 02:09 exageraldo