Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Выполнится ли вьюха Django до конца, если запрос прерван клиентом? [RSS Feed]

#1 Окт. 2, 2012 00:04:32

ks
От:
Зарегистрирован: 2009-05-20
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнится ли вьюха Django до конца, если запрос прерван клиентом?

Человек закрыл ссылку в браузере, но запрос ещё не отработал до render_to_response.
Как себя поведет вьюха в стандартном варианте? Как проверить?
Нужно, чтоб до конца отработка дошла - как реализовать?



Офлайн

#2 Окт. 2, 2012 01:28:29

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Выполнится ли вьюха Django до конца, если запрос прерван клиентом?

ks
Как проверить?
Поставить в конце логгинг.

Отредактировано odnochlen (Окт. 2, 2012 01:28:40)

Офлайн

#3 Окт. 2, 2012 05:42:37

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Выполнится ли вьюха Django до конца, если запрос прерван клиентом?

ks
Человек закрыл ссылку в браузере, но запрос ещё не отработал до render_to_response.
Как себя поведет вьюха в стандартном варианте? Как проверить?
Нужно, чтоб до конца отработка дошла - как реализовать?
А почему она должна себя как то вести по особенному? Откуда вьюха вообще может знать о том, что в браузере закрыли страницу? Функция она и есть функция, отработает и отдаст результат.



Офлайн

#4 Окт. 2, 2012 21:24:40

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Выполнится ли вьюха Django до конца, если запрос прерван клиентом?

FishHook
Откуда вьюха вообще может знать о том, что в браузере закрыли страницу?
Пых по умолчанию прибивает скрипт, если рвется соединение (наверно, это имел в виду ТС).

Офлайн

#5 Окт. 3, 2012 12:25:35

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Выполнится ли вьюха Django до конца, если запрос прерван клиентом?

Фронт-енд сервер (nginx, apache) первым получит сообщение о разрыве соединения.
Обычно фронт-енд настраивают так, чтобы он либо принудительно гасил обработчики запросов, либо передавал им специальный сигнал SIGPIPE (те сами его обработают как им нужно).
Соответственно,
1. вам нужно убедиться в нужной вам настройке фронта
2. ваше приложение должно нормально обрабатывать получаемый от фронта сигнал и ничего не писать в открытый ранее поток, чтобы не возникало исключение EPIPE.

PS
Дополнительная обработка EPIPE, наверное, не помешает.



Офлайн

#6 Окт. 11, 2012 10:02:58

daniel
Зарегистрирован: 2012-04-05
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнится ли вьюха Django до конца, если запрос прерван клиентом?

Если запрос к web-серверу не умрёт по таймауту - view, естественно, закончит свою работу. Но если нужна гарантия выполнения задачи - для этих целей лучше использовать систему очередей, к примеру, http://hosting4django.net/blog/python/django/celery-redis. Но в отличии от статьи Вам больше подойдёт броккер RabbitMQ, т.к. он гарантирует выполнение задачи, в отличии от Celery.




Hosting4Django - качественный хостинг для Django-проектов

Отредактировано daniel (Окт. 11, 2012 10:04:53)

Офлайн

#7 Окт. 29, 2012 18:18:26

ks
От:
Зарегистрирован: 2009-05-20
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Выполнится ли вьюха Django до конца, если запрос прерван клиентом?

+++ всем огромное спасибо, понял в каких направлениях копать.



Офлайн

  • Начало
  • » Django
  • » Выполнится ли вьюха Django до конца, если запрос прерван клиентом?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version