Solicitações Python (>= 1.*):Como desabilitar o keep-alive?
-
21-12-2019 - |
Pergunta
Estou tentando programar um web-crawler simples usando o módulo Requests e gostaria de saber como desabilitar seu recurso -default-keep-alive.
Eu tentei usar:
s = requests.session()
s.config['keep_alive'] = False
No entanto, recebo um erro informando que o objeto de sessão não possui o atributo 'config', acho que foi alterado com a nova versão, mas não consigo encontrar como fazê-lo na documentação oficial.
A verdade é que quando executo o rastreador em um site específico, ele obtém no máximo cinco páginas e fica girando infinitamente, então pensei que tivesse algo a ver com o recurso keep-alive!
PS:Solicitações é um bom módulo para um rastreador da web?existe algo mais adaptado?
Obrigado !
Solução
Isso funciona
s = requests.session()
s.keep_alive = False
Outras dicas
Não tenho certeza, mas você pode tentar passar {"Connection":"close"} como cabeçalhos HTTP ao enviar uma solicitação GET usando solicitações.Isso fechará a conexão assim que um servidor retornar uma resposta.
>>> headers = {"Connection": "close"}
>>> r = requests.get('https://example.xcom', headers=headers)
Como @praveen sugeriu, espera-se que usemos HTTP/1.1
cabeçalho Connection: close
para notificar o servidor de que a conexão deve ser encerrada após a conclusão da resposta.
Aqui está como é descrito em RFC 2616:
HTTP/1.1 define a opção de conexão "fechar" para o remetente sinalizar que a conexão será fechada após a conclusão da resposta.Por exemplo,
Connection: close
nos campos do cabeçalho da solicitação ou da resposta indica que a conexão NÃO DEVE ser considerada 'persistente' (seção 8.1) após a conclusão da solicitação/resposta atual.
Aplicativos HTTP/1.1 que não suportam conexões persistentes DEVEM incluir a opção de conexão "fechar" em todas as mensagens.