Прерывание ответа при выходе клиента из потока (StreamHttpResponse) (Django, Google Cloud Run)
Я использую StreamHttpResponse для передачи двоичных данных клиенту. Сначала мне нужно установить время начала и окончания потока. Локально, когда клиент покидает поток (я закрываю страницу браузера), срабатывает метод close().
Из кода django (из класса HttpResponseBase):
# These methods partially implement the file-like object interface.
# See https://docs.python.org/library/io.html#io.IOBase
# The WSGI server must call this method upon completion of the request.
# See http://blog.dscpl.com.au/2012/10/obligations-for-calling-close-on.html
def close(self):
for closer in self._resource_closers:
try:
closer()
except Exception:
pass
# Free resources that were still referenced.
self._resource_closers.clear()
self.closed = True
signals.request_finished.send(sender=self._handler_class)
В Google Cloud Run этот метод вызывается только через 300 секунд (независимо от того, слушает клиент поток или нет). Можно ли вызывать метод close(), когда клиент покидает поток на сервере?
Я ожидал, что ответ будет прерван на сервере, как только клиент покинет поток (веб-страницу). Локально это сработало.