Найти - Пользователи
Полная версия: Выполнится ли вьюха Django до конца, если запрос прерван клиентом?
Начало » Django » Выполнится ли вьюха Django до конца, если запрос прерван клиентом?
1
ks
Человек закрыл ссылку в браузере, но запрос ещё не отработал до render_to_response.
Как себя поведет вьюха в стандартном варианте? Как проверить?
Нужно, чтоб до конца отработка дошла - как реализовать?
odnochlen
ks
Как проверить?
Поставить в конце логгинг.
FishHook
ks
Человек закрыл ссылку в браузере, но запрос ещё не отработал до render_to_response.
Как себя поведет вьюха в стандартном варианте? Как проверить?
Нужно, чтоб до конца отработка дошла - как реализовать?
А почему она должна себя как то вести по особенному? Откуда вьюха вообще может знать о том, что в браузере закрыли страницу? Функция она и есть функция, отработает и отдаст результат.
odnochlen
FishHook
Откуда вьюха вообще может знать о том, что в браузере закрыли страницу?
Пых по умолчанию прибивает скрипт, если рвется соединение (наверно, это имел в виду ТС).
Lexander
Фронт-енд сервер (nginx, apache) первым получит сообщение о разрыве соединения.
Обычно фронт-енд настраивают так, чтобы он либо принудительно гасил обработчики запросов, либо передавал им специальный сигнал SIGPIPE (те сами его обработают как им нужно).
Соответственно,
1. вам нужно убедиться в нужной вам настройке фронта
2. ваше приложение должно нормально обрабатывать получаемый от фронта сигнал и ничего не писать в открытый ранее поток, чтобы не возникало исключение EPIPE.

PS
Дополнительная обработка EPIPE, наверное, не помешает.
daniel
Если запрос к web-серверу не умрёт по таймауту - view, естественно, закончит свою работу. Но если нужна гарантия выполнения задачи - для этих целей лучше использовать систему очередей, к примеру, http://hosting4django.net/blog/python/django/celery-redis. Но в отличии от статьи Вам больше подойдёт броккер RabbitMQ, т.к. он гарантирует выполнение задачи, в отличии от Celery.
ks
+++ всем огромное спасибо, понял в каких направлениях копать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB