-
-
Notifications
You must be signed in to change notification settings - Fork 382
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adiciona a extensão correspondente no arquivo que está sendo baixado #1045
base: main
Are you sure you want to change the base?
Conversation
está sendo baixado, quando o scrapy não consegue achar a extensão pela url de download. Essa parte é uma implementação (com ajustes) do código sugerido pelo @ogecece em okfn-brasil#946 (review) . Para resolver o problema de "nos casos onde forçamos a detecção da extensão, o arquivo sempre seria baixado novamente de forma desnecessária", o método `stat_file` foi sobrescrito, com a inclusão da busca por um arquivo com extensão quando o scrapy não consegue achar a extensão pela url de download para comparar se o arquivo já foi baixado. Resolve okfn-brasil#819
6d9711c
to
155c8f2
Compare
@rennerocha tu consegue dar uma olhada nesse PR? Eu comecei a revisar hoje com a @trevineju e me pareceu que o caminho que o @AlexJBSilva tá seguindo tá correto, mas precisaríamos que também fosse implementado o Pensa em outro caminho de implementação? |
@ogecece eu já tinha dado uma olhada nisso a um tempo atrás. Vou ver com calma amanhã e sugiro algo (ou não) |
@rennerocha conseguisse olhar? |
Estou analisando agora. Aparentemente é esse o caminho. Estou analisando para ver se é possível deixar mais simples, evitando mudar demais o padrão do Scrapy. Porém como você mesmo comentou, essa alteração só funciona para arquivos armazenados localmente. É necessário uma implementação do |
Acabei de analisar com mais calma e encontrei um problema com a solução proposta que pode não afetar o armazenamento do arquivo, mas cria uma inconsistência de resultados. Na chave Primeira execução:
Segunda execução:
O que eu comentei acima pode ser solucionado provavelmente alterando o |
Estou achando essa solução com a implementação de FilesStores customizados mais complicada do que precisava ser. Considero solução mais simples, apenas definindo a extensão no método
Minha sugestão (e se concordarem eu faço o ajuste no PR) é usar o O código acabará muito mais simples de se manter e resolvemos esse problema imediato rapidamente. Se no futuro percebermos algum impacto grande no tempo de execução dos raspadores, aí podemos reconsiderar a mudança mais complexa. O que acham? @ogecece @trevineju @AlexJBSilva |
Oi, @rennerocha! Obrigada por revisar! Como o @ogecece avançou mais do que eu nessa revisão, acho que ele pode comentar melhor sobre a solução pelo lado mais técnico. Mas pelo lado de impacto...
Integrados, ainda são poucos, realmente. Mas conhecidos são bastantes já, como os sistemas DOSP (~250 municípios) e SAIIO (~300 municípios), por exemplo, todos eles tem esse problema. Já foram identificados casos individuais também, mas não me recordo deles de cabeça agora. Será que não vale a pena já pensarmos na solução mais ideal desde agora? |
O problema em produção que temos, de não ter a extensão correta, pode ser resolvido pela solução simples (que eu prefiro, apesar de baixar um Diário mais de uma vez SE o raspador for executado novamente naquela data, o que não acontece em produção) ou com a complexa (que vai exigir mais tempo para testar os casos). Então não vai agravar nenhum problema, e vai resolver ele rapidamente, com menos código. |
@rennerocha, concordo. Se encontrou outro problema que ainda precisaríamos resolver e complexificar mais ainda a solução, melhor lidar com essa consequência que é contornável. Vai na mesma linha que eu havia comentado aqui, inicialmente. Você consegue fazer os ajustes então pra gente mesclar? |
Descrição
Adiciona a extensão correspondente no arquivo que está sendo baixado, quando o scrapy não consegue achar a extensão pela url de download. Essa parte é uma implementação (com ajustes) do código sugerido pelo @ogecece em #946 (review) que utiliza a biblioteca
filetype
.Para resolver o problema de "nos casos onde forçamos a detecção da extensão, o arquivo sempre seria baixado novamente de forma desnecessária", o método
stat_file
foi sobrescrito, com a inclusão da busca por um arquivo com extensão quando o scrapy não consegue achar a extensão pela url de download para comparar se o arquivo já foi baixado.Resolve #819
O PR #946 pode ser encerrado.
Checklist - Novo spider
start_date
eend_date
definidos) ao menos uma vez e os dados retornados estavam corretos.log_count/ERROR
igual a zero).start_date
no seu spider com a data do Diário Oficial mais antigo disponível na página da cidade.