GNU/Linux >> Znalost Linux >  >> Linux

Má Curl časový limit?

Zatím jsem nic pořádně nenašel, ale je pravda, že curl ve skutečnosti vůbec nevyprší časový limit?

 [email protected]:~# curl http://localhost/testdir/image.jpg

Ptám se, protože přesměruji jakýkoli požadavek na obrázky v testdir do samostatného modulu Apache, který tyto obrázky generuje za běhu. Než bude obrázek skutečně připraven a doručen žádajícímu klientovi, může to trvat až 15 minut.

curl vždy čekat (nebo to závisí na konfiguraci) nebo existuje nějaký časový limit?

Přijatá odpověď:

Ano.

Parametry časového limitu

curl má dvě možnosti:--connect-timeout a --max-time .

Citace z manuálové stránky:

--connect-timeout <seconds>
    Maximum  time  in  seconds  that you allow the connection to the
    server to take.  This only limits  the  connection  phase,  once
    curl has connected this option is of no more use.  Since 7.32.0,
    this option accepts decimal values, but the actual timeout  will
    decrease in accuracy as the specified timeout increases in deci‐
    mal precision. See also the -m, --max-time option.

    If this option is used several times, the last one will be used.

a:

-m, --max-time <seconds>
    Maximum  time  in  seconds that you allow the whole operation to
    take.  This is useful for preventing your batch jobs from  hang‐
    ing  for  hours due to slow networks or links going down.  Since
    7.32.0, this option accepts decimal values, but the actual time‐
    out will decrease in accuracy as the specified timeout increases
    in decimal precision.  See also the --connect-timeout option.

    If this option is used several times, the last one will be used.

Výchozí

Zde (v Debianu) se přestane pokoušet o připojení po 2 minutách, bez ohledu na čas zadaný pomocí --connect-timeout a ačkoli se zdá, že výchozí hodnota časového limitu připojení je 5 minut podle DEFAULT_CONNECT_TIMEOUT makro v lib/connect.h.

Výchozí hodnota pro --max-time Zdá se, že neexistuje, takže se curl čekat navždy na odpověď, pokud bude počáteční připojení úspěšné.

Co použít?

Pravděpodobně vás zajímá druhá možnost, --max-time . Pro váš případ jej nastavte na 900 (15 minut).

Související:rozdíl mezi „du -sh *“ a „du -sh ./*“?

Zadání možnosti --connect-timeout na něco jako 60 (jedna minuta) může být také dobrý nápad. V opačném případě curl se pokusí připojit znovu a znovu, zřejmě pomocí nějakého backoff algoritmu.


Linux
  1. Co dělá poll() s časovým limitem 0?

  2. Má Python argument argc?

  3. Má struct hostent pole h_addr?

  1. Má jádro Linuxu hlavní funkci?

  2. Musí potrubí zapisovat dočasný soubor?

  3. tee:Co přesně dělá volba --ignore-interrupts?

  1. Jak se program rozhodne, zda bude či nebude mít barevný výstup?

  2. Linux – Ionice nemá žádný vliv na nesynchronizované zápisy (tj. normální zápisy)?

  3. Proč nemají Ifs žádný účinek v `když Ifs=číst...`?