Wget: espera após o tempo limite?

1

Eu vejo esta opção:

--waitretry=seconds

If you don't want Wget to wait between every retrieval, but only between retries of failed downloads, you can use this option. Wget will use linear backoff, waiting 1 second after the first failure on a given file, then waiting 2 seconds after the second failure on that file, up to the maximum number of seconds you specify. Therefore, a value of 10 will actually make Wget wait up to (1 + 2 + ... + 10) = 55 seconds per file.

By default, Wget will assume a value of 10 seconds.

Mas isso não (a) não parece estar aumentando o tempo entre as tentativas de repetição, e (b) não quero definir uma quantidade "máxima" de tempo para aguardar, mas um mínimo.

--timeout=seconds

Set the network timeout to seconds seconds. This is equivalent to specifying --dns-timeout, --connect-timeout, and --read-timeout, all at the same time.

When interacting with the network, Wget can check for timeout and abort the operation if it takes too long. This prevents anomalies like hanging reads and infinite connects. The only timeout enabled by default is a 900-second read timeout. Setting a timeout to 0 disables it altogether. Unless you know what you are doing, it is best not to change the default timeout settings.

All timeout-related options accept decimal values, as well as subsecond values. For example, 0.1 seconds is a legal (though unwise) choice of timeout. Subsecond timeouts are useful for checking server response times or for testing network latency.

Isso parece definir o tempo antes de desistir.

Então, como eu digo "aguarde 10 minutos antes de tentar novamente se a conexão expirar"?

    
por mpen 27.01.2011 / 00:04

1 resposta

2

Você pode desativar a repetição (-t 0) e verificar o valor de retorno do wget. Por exemplo, ao usar o bash:

failures=0
while [ $failures -lt 10 ]; do
 wget -t 0 http://www.example.com/asdf
 if [ "$?" = 0 ]; then
  break
 else
  let failures=failures+1
  sleep 600
 fi
done

Isto irá verificar o valor de retorno de wget e dormir 600 segundos, se wget falhou. O wget retorna 0 se o arquivo foi baixado (e salvo) com sucesso. Este pequeno script é executado apenas dez vezes - é claro que você pode alterar o argumento no loop while. Caso contrário, por exemplo, o script tentará baixar o mesmo arquivo indefinidamente, mesmo que simplesmente não exista. A execução usando shell diferente requer pequenas alterações (você não pode usar "let", por exemplo, mas geralmente expr é um bom substituto).

    
por 27.01.2011 / 13:33

Tags