Kann ein http-Server feststellen, dass ein Client seine Anfrage storniert hat?

Meine Web-App muss viele Daten verarbeiten und bereitstellen, um bestimmte Seiten anzuzeigen. Manchmal schließt oder aktualisiert der Benutzer eine Seite, während der Server sie noch verarbeitet. Dies bedeutet, dass der Server die Daten einige Minuten lang verarbeitet, um sie dann an einen Client zu senden, der nicht mehr zuhört.

Ist es möglich zu erkennen, dass die Verbindung unterbrochen wurde und darauf zu reagieren?

In diesem speziellen Projekt verwenden wir Django und NginX oder Apache. Ich nahm an, dass dies möglich ist, da der Django-Entwicklungsserver auf abgebrochene Anforderungen zu reagieren scheint, indem er Ausnahmen für unterbrochene Leitungen druckt. Ich hätte gerne eine Ausnahme, die mein Anwendungscode abfangen könnte. Es scheint, dass JSP dies kann. So kann node.js Hie.

Alternativ könnte ich einen Unload-Event-Handler auf der betreffenden Seite registrieren, eine synchrone XHR-Anforderung ausführen lassen, dass die vorherige Anforderung dieses Benutzers storniert wird, und eine Art prozessübergreifende Kommunikation durchführen, um dies zu erreichen. Vielleicht, wenn die langsamere Datenverarbeitung an einen anderen Prozess übergeben würde, den ich leichter identifizieren und beenden könnte, ohne den antwortenden Prozess zu beenden ...

Antworten auf die Frage(2)

Ihre Antwort auf die Frage