Fphttpclient: Timeout mit Get?

Rund um die LCL und andere Komponenten
Antworten
Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Fphttpclient: Timeout mit Get?

Beitrag von Timm Thaler »

Laut https://fossies.org/diffs/fpcbuild/3.0.0_vs_3.0.2/fpcsrc/packages/fcl-web/src/base/fphttpclient.pp-diff.html sollte fphttpclient die Angabe IOTimeout enthalten. Nun habe ich das versucht auf eine Get-Anweisung anzuwenden:

Code: Alles auswählen

ttest := Now();
    try
      httpClient := TFPHTTPClient.Create(nil);
      httpClient.IOTimeout := 2// Timeout 2 Sek
      try
        url := ctgaddr;
        txt := httpClient.Get(url);
      except  // Timeout oder Verbindungsfehler
        log.Message('Telegram Bot getrennt');
      end;
    finally
      httpClient.Free;
    end;
    WriteLn('Dauer ', MillisecondsBetween(Now(), ttest));


Allerdings bekomme ich bei IOTimeout von 2 oder 20 keine Verbindung, die Exception wird ausgelöst, Dauer etwa 30msec.

Bei Timeout 50 bekomme ich sporadisch Verbindung, Dauer dann um die 230msec, oder eine Exception mit Dauer 50msec.

Bei Timeout 100 oder größer bekomme ich die Verbindung, Dauer etwa 230msec, mitunter aber auch 3, 4, 5 Sekunden. Eine Exception bekomme ich nur, wenn die Verbindung wirklich unterbrochen ist, dann aber innerhalb von 3-5msec.

Ich kann hier keinen Zusammenhang zwischen den für Timeout angegebenen Wert und der realen Dauer erkennen. Eigentlich sollte Timeout doch in Sekunden sein, oder? Ich hätte gern ein Timeout nach etwa 15 Sekunden. Vordefinierter Wert für IOTimeout ist übrigens 0. Kompiliert mit FPC 3.1.1, Crosscompiler für arm-linux, läuft auf dem Raspberry unter dem aktuellen Raspbian.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Fphttpclient: Timeout mit Get?

Beitrag von wp_xyz »

Timm Thaler hat geschrieben:Eigentlich sollte Timeout doch in Sekunden sein, oder?

Nein, in Millisekunden.

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Fphttpclient: Timeout mit Get?

Beitrag von Timm Thaler »

wp_xyz hat geschrieben:Nein, in Millisekunden.


Ok, dann hab ich das in einem Forum falsch gesehen. Gibts eine Doku dazu?

Aber warum läuft dann einerseits Get ins Timeout, wenn ich 20-50 einstelle, andererseits gibt es auch nach 5 Sekunden kein Timeout, wenn ich 2000 einstelle - was ja dann 2 Sekunden wäre?

Antworten