Bisher konnte ich nichts wirklich finden, aber ist es wahr, dass es curl
überhaupt nicht zu einer Zeitüberschreitung kommt?
user@host:~# curl http://localhost/testdir/image.jpg
Ich frage, weil ich jede Anfrage nach Bildern in testdir
ein separates Apache-Modul umleite, das diese Bilder im laufenden Betrieb generiert. Es kann bis zu 15 Minuten dauern, bis das Bild tatsächlich fertig ist und an den anfordernden Client geliefert wird.
Wird curl
immer warten (oder ist es abhängig von der Konfiguration) oder gibt es irgendeine Art von Zeitüberschreitung?
Antworten:
Ja.
Timeout-Parameter
curl
hat zwei Möglichkeiten:--connect-timeout
und--max-time
.Zitat aus der Manpage:
und:
Standardeinstellungen
Hier (unter Debian) hört es nach 2 Minuten auf, eine
--connect-timeout
Verbindung herzustellen , unabhängig von der mit angegebenen Zeit, und obwohl der Standardwert für das Verbindungs-Timeout laut Makro in lib / connect.h 5 Minuten zu sein scheint .DEFAULT_CONNECT_TIMEOUT
Ein Standardwert für
--max-time
scheint nicht vorhanden zu sein, sodasscurl
auf eine Antwort für immer gewartet werden muss, wenn die erste Verbindung erfolgreich ist.Was zu benutzen?
Sie interessieren sich wahrscheinlich für die letztere Option
--max-time
. Stellen Sie für Ihren Fall900
(15 Minuten) ein.Die Angabe einer Option
--connect-timeout
für60
(eine Minute) könnte ebenfalls eine gute Idee sein. Andernfallscurl
wird versucht, immer wieder eine Verbindung herzustellen, anscheinend mit einem Backoff-Algorithmus.quelle
Es gibt ein Zeitlimit: / usr / bin / timelimit - begrenzt effektiv die absolute Ausführungszeit eines Prozesses
quelle
Besser als
--max-time
die--speed-limit
und--speed-time
Optionen. Kurz gesagt,--speed-limit
gibt die minimale Durchschnittsgeschwindigkeit an, die Sie akzeptieren möchten, und--speed-time
gibt an, wie lange die Übertragungsgeschwindigkeit unter dieser Grenze bleiben kann, bevor die Übertragung abläuft und abgebrochen wird.quelle
Wenn Sie coreutils unter MacOS installiert haben, können Sie den GNU-Befehl timeout verwenden, der in diesem Paket enthalten ist. Den GNU-Werkzeugen wird ein vorangestellt,
g
so wie es die CLI sein würdegtimeout
.Beispiel
quelle
Einige Lösungen in BASH4 +
Beispielgebrauch:
EMPFEHLEN, DASS NC verwendet wird, wenn wir einen bestimmten Port benötigen
quelle