Найти - Пользователи
Полная версия: Прогресс обработки формы
Начало » Django » Прогресс обработки формы
1
jan2ary
Доброго времени суток.

Есть длительная операция (3-5 минут), которая обрабатывается методом save модели. Форма создается из экземпляра модели. Операция состоит из нескольких этапов. Хотелось бы показывать пользователю, какой этап выполняется именно сейчас, чтоб он, бедняга, совсем не разуверился в жизни.
Средствами ajax когда-то делал, но как здесь эту возможность использовать, даже не представляю. Подтолкните в правильном направлении, пожалуйста…

Спасибо.

Обновлено: Сейчас во вьюшке создаю форму из класса формы, вся обработка только во вьюшке. Так что безмодельный вариант тоже интересен.
Александр Кошелев
jan2ary
Есть длительная операция (3-5 минут), которая обрабатывается методом save модели
не очень хорошо. лучше это делать отдельным потоком, или вообще процессом по расписанию.
jan2ary
Средствами ajax когда-то делал, но как здесь эту возможность использовать, даже не представляю.
А ничего не меняется, надо по таймеру обращаться к серверу за новой порцией информации о процессе выполения.
Но суть всё та же. Пользователю нужно как можно скорее отдать страницу и не заставлять его ждать минуты. Как на youtube напрмер.
jan2ary
Так и сделал. View формы запускает отдельный поток, обрабатывающий запрос, форма же отдается сразу. Поток обработки сохраняет состояние обработки в SessionStore, а отдельное примитивное view отвечает на ajax-запросы о статусе от клиента, доставая состояние из SessionStore.
Вот :)
jan2ary
Вот только почему-то больше двух обработок в одной сессии (в нескольких табах фф, например) не хотят сохраняться в объекте сессии. Возможно, сессия - не лучшее место для хранения и обмена данными при параллельной обработке в джанго? Грешил на sqlite3, очень уж простая база, но с OracleXE то же самое. Если нужно, тестовый проект могу выложить.
Maximbo
Разве SessionStore не фиолетово что сохранять? Главное – чтобы ключи были уникальными.
jan2ary
Вот я тоже так думал. Ключи генерил случайные:

''.join(random.sample(string.ascii_letters, 16))

Ан нет…
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