Jak dotąd nie mogłem znaleźć niczego naprawdę, ale czy to prawda, że curl
tak naprawdę wcale nie ma czasu?
user@host:~# curl http://localhost/testdir/image.jpg
Pytam, ponieważ przekierowuję każde żądanie obrazów testdir
do osobnego modułu Apache, który generuje te zdjęcia w locie. Może minąć do 15 minut, zanim zdjęcie będzie gotowe i dostarczone do klienta.
Czy curl
zawsze będzie czekać (czy to zależy od konfiguracji), czy może jest jakiś limit czasu?
Odpowiedzi:
Tak.
Parametry limitu czasu
curl
ma dwie opcje:--connect-timeout
i--max-time
.Cytowanie ze strony man:
i:
Domyślne
Tutaj (na Debianie) przestaje próbować połączyć się po 2 minutach, niezależnie od czasu określonego za pomocą
--connect-timeout
i chociaż domyślna wartość limitu czasu połączenia wydaje się wynosić 5 minut, zgodnie zDEFAULT_CONNECT_TIMEOUT
makrem w lib / connect.h .--max-time
Wydaje się, że domyślna wartość nie istnieje, co oznacza, żecurl
oczekiwanie na odpowiedź będzie trwało wiecznie.Czego używać?
Prawdopodobnie jesteś zainteresowany w tym drugim wariancie
--max-time
. W twoim przypadku ustaw na900
(15 minut).Dobrym pomysłem może być również określenie opcji
--connect-timeout
czegoś takiego jak60
(jedna minuta). W przeciwnym raziecurl
spróbuje połączyć się ponownie, najwyraźniej używając jakiegoś algorytmu wycofywania.źródło
Istnieje timelimit: / usr / bin / timelimit - skutecznie ogranicza bezwzględny czas wykonywania procesu
źródło
Lepsze niż
--max-time
są--speed-limit
i--speed-time
opcje. Krótko mówiąc,--speed-limit
określa minimalną średnią prędkość, którą jesteś gotów zaakceptować, i--speed-time
określa, jak długo prędkość transferu może pozostać poniżej tego limitu, zanim upłynie limit czasu przesyłania i zostanie przerwana.źródło
Jeśli masz zainstalowany coreutils na MacOS, możesz użyć polecenia limitu czasu GNU, które jest dołączone do tego pakietu. Narzędzia GNU są poprzedzone przedrostkiem
g
CLIgtimeout
.Przykład
źródło
Kilka rozwiązań w BASH4 +
Przykładowe użycie:
POLECAM, ŻE NC użył, jeśli potrzebujemy określonego portu
źródło