Vernünftige HTTP-POST-timeout-Werte zu verwenden, wenn die programmgesteuerte Erstellung von Anfragen?
Wenn Sie programmgesteuert die Erteilung HTTP POST-Anfragen, welche timeout Werte wären sinnvoll?
In meinem Fall, ich bin auf der Suche nach set 'vernünftige' timeout-Werte bei der Herstellung von POST-requests in PHP, aber das gilt für jede Sprache.
Ich muss in der Lage sein für die Ausgabe einer Reihe von Anforderungen, die jeweils an einem vom Benutzer angegebenen URL. Wenn ich tun müssen, um Anforderungen zu verarbeiten, nacheinander, statt gleichzeitig, ich würde gerne geben Sie eine sinnvolle Zeit über das eine Anforderung ist, gilt die Zeitüberschreitung.
PHP default socket timeout ist 60 Sekunden. Dies scheint eine unnötig lange Zeit zu warten, bevor Sie entscheidet, eine Anfrage ist nicht abgeschlossen sein werden.
Da diese POST-Anfragen, die Sie sollten schnell abgeschlossen werden - es gibt keine Daten abgerufen werden und zurückgegeben werden wie bei einer GET-Anfrage.
Wir sollten in der Lage sein, zu vermuten, die meiste Zeit, dass der Ausfall für die Ausgabe einer Antwort auf eine Anfrage innerhalb von X Sekunden bedeutet, dass der host ist unwahrscheinlich, dass das Problem eine Antwort innerhalb einer angemessenen Frist, für Werte von X deutlich weniger als 60.
Sicherlich hosts selten mehr als 60 Sekunden zu reagieren, um eine einfache POST-Anfrage. Haben Sie auch nur selten mehr als 10 Sekunden? 5 Sekunden?
Was sinnvoll sein könnte, die Werte für X in der Praxis? Begründungen begleitenden Vorschläge würden äußerst nützlich sein.
- Wenn Sie eine Datei hochladen, vor allem von einem mobilen Gerät, könnte es länger als 60 Sekunden dauern.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde empfehlen, mal ein test, da es zu viele Faktoren zu geben, einen Wert, der immer vernünftig sein.
Einer POST-Anforderung sendet Daten verarbeitet werden. Wie lange wird die Bearbeitung dauern? Dies wird application/spezifische Daten.
Wo ist der Gastgeber? Der Benutzer liefert die URL, so dass unbekannt sein wird. Wir können nicht wissen, was Verkehr wird wie zwischen Ihrer Anwendung und dem host. Wir können nicht wissen, die server-Last auf dem host.
Im wesentlichen, es gibt keine universell sinnvolle timeout. Sie haben Ihre eigenen besten Urteil auf der Grundlage Ihrer spezifischen Bedürfnisse. Richten Sie einen test und nutzen, um zu bestimmen, Ihre Grenzen.
Meisten Bibliotheken haben eine connect-timeout eine Zeitüberschreitung beim Lesen. Das heißt, die Wartezeit zwischen versuchen, eine Verbindung zu dem remote-server, und der timeout nach dem senden der Anforderung, dass Sie auf eine Antwort warten.
Wenn es sich um ein lokales web service würde ich die connect timeout-low, 1 Sekunde oder weniger, wenn die Bibliothek es unterstützt. Wenn der remote-service, den Sie eine Verbindung herstellen möchten, nicht verfügbar IMHO ist es besser, eine Antwort zurück an den Benutzer sofort, als zuzulassen, dass alle Ihre worker-threads zu blockieren, remote-service, wodurch andere upstream-Fehler.
Als für die Zeitüberschreitung beim Lesen, das ist etwas schwieriger zu beantworten, müssen Sie es niedrig zu sein, so dass Sie nicht erschöpfen Ihre pool von Arbeitnehmern, die darauf warten, dass der remote-service für die Rückkehr, aber Sie auch nicht wollen, dass es so niedrig ist, dass es schließt die Verbindung vor dem Lesen eine Antwort. Das ist etwas, das Sie haben zu prüfen, dann Spur als eine Metrik, wenn Ihr system in der Produktion.