Skip to content
This repository has been archived by the owner on Oct 2, 2023. It is now read-only.

Adicionar checksum a todos os arquivos #309

Open
anapaulagomes opened this issue Mar 27, 2021 · 9 comments
Open

Adicionar checksum a todos os arquivos #309

anapaulagomes opened this issue Mar 27, 2021 · 9 comments
Assignees
Labels

Comments

@anapaulagomes
Copy link
Contributor

No description provided.

@anapaulagomes anapaulagomes added the good first issue Good for newcomers label Mar 28, 2021
@geraldo-castro
Copy link

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?

@anapaulagomes
Copy link
Contributor Author

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).

@exageraldo
Copy link
Member

exageraldo commented Sep 8, 2021

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. 😅

@anapaulagomes
Copy link
Contributor Author

anapaulagomes commented Sep 8, 2021 via email

@exageraldo
Copy link
Member

exageraldo commented Sep 10, 2021

@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!

@anapaulagomes
Copy link
Contributor Author

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.

@exageraldo
Copy link
Member

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. 😄

@anapaulagomes
Copy link
Contributor Author

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).

@exageraldo
Copy link
Member

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 exageraldo self-assigned this Oct 10, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

3 participants