Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Обработка отправленных пользователем данных [RSS Feed]

#1 Апрель 10, 2014 12:28:42

ivan985
Зарегистрирован: 2014-02-01
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка отправленных пользователем данных

У меня есть форма через которую пользователь загружает на сервер файл и содержимое этого файла нужно обработать.
Сейчас у меня из функции представления, в которой осуществляется прием файла идёт вызов функции, которая занимается обработкой полученного файла. Кривость такого метода, что пока обработка файла не закончится, пользователь не получит страницу, на которой будет отображено, что файл принят успешно. Вопрос в том, куда сохранить файл и откуда запускать обработку файла (откуда и как её запускать).

Отредактировано ivan985 (Апрель 10, 2014 12:28:59)

Офлайн

#2 Апрель 10, 2014 13:06:12

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Обработка отправленных пользователем данных

celery?

Офлайн

#3 Апрель 10, 2014 13:43:21

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

Обработка отправленных пользователем данных

+1 celery

Офлайн

#4 Апрель 10, 2014 13:45:07

ivan985
Зарегистрирован: 2014-02-01
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка отправленных пользователем данных

PanovSergey
Вроде бы то, что нужно, но хотелось бы узнать, есть ещё варианты?

Офлайн

#5 Апрель 10, 2014 13:51:07

ilnur
От: Казань
Зарегистрирован: 2009-01-06
Сообщения: 524
Репутация: +  22  -
Профиль   Отправить e-mail  

Обработка отправленных пользователем данных

ivan985
есть ещё варианты?
если нет необходимости в обработке файле сразу после отправки. можно сделать таблицу с задачками, куда добавлять инфу по файлу и написать манадж команду. и раз в сутки обработать все файлы пользователя разом.
такой вариант, имхо проще.

Офлайн

#6 Апрель 10, 2014 13:54:58

ivan985
Зарегистрирован: 2014-02-01
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка отправленных пользователем данных

ilnur
Нет файл, нужно начинать обрабатывать после загрузки.
Я тоже думал задействовать планировщик cron, просто думаю есть более кашерный способ.

Офлайн

#7 Апрель 10, 2014 14:15:13

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

Обработка отправленных пользователем данных

Два способа:
http://habrahabr.ru/post/158961/

Способ с кроном или асинхронной обработкой файла, запускаемой сразу после загрузки файла чреват уязвимостью. Все равно нужно заботиться о длине очереди и количестве запускаемых процессов.
Смысл придумывать велосипед не вижу.

Пользователю, конечно, нужно сразу отдавать страницу после загрузки файла, если изначально не используется асинхронный аплоад.
Загрузился файл - сразу сообщить пользователю.
И потом показывать прогресс обработки файла.



Офлайн

#8 Апрель 10, 2014 14:46:39

ivan985
Зарегистрирован: 2014-02-01
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка отправленных пользователем данных

Lexander
Если я выполню return render_to_response, то у меня функция завершится. Откуда мне начинать запуск обработки файла?

Офлайн

#9 Апрель 10, 2014 17:31:47

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

Обработка отправленных пользователем данных

Как раз этот способ я указал как не рекомендуемый!
А вообще перед return render_to_response можно вызывать запуск другого скрипта асинхронно.



Офлайн

#10 Апрель 10, 2014 20:07:30

ivan985
Зарегистрирован: 2014-02-01
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка отправленных пользователем данных

Lexander
Подскажите пожалуйста, как можно запустить другой модуль асинхронно.

P.S Пытался найти сам, ничего не получилось, вся надежда на вас.

Отредактировано ivan985 (Апрель 10, 2014 23:13:06)

Офлайн

  • Начало
  • » Django
  • » Обработка отправленных пользователем данных[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version