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 !

Foi útil?

Solução

Isso funciona

s = requests.session()
s.keep_alive = False

Respondido nos comentários de uma pergunta semelhante.

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top