Форумы сайта python.su
Вы не зашли.
А как почтенные питонеры реализуют подобные вещи: расчет по базе, массивные отчеты и т.д.
Пока имею такую идею: запустить отдельный процес, слушающий на отдельном порту, который ведет очередь задач, обработчик запроса обращается к нему, ставит задачу в очередь и возвращает форму с индикатором. после этого скрипт из броузера периодически запрашивает процент выполнения задачи.
Может есть варианты попроще?
Отредактированно PooH (2007-08-13 16:11:48)
Неактивен
сложные запросы делал на чистом SQL и передавал виджету, который превращал это дело в html-таблицу и если ajax, то отдавал
return dict(table_html = Table.render()) b на стороне клиента вставлял в div или другой тег, а пока загружалась табличка выводил на экран рисунок gif с прогрессбаром
насчет процентов - как при выполнении запроса sql узнать на сколько он выполнился?
PS предлагаю разбить на части эту задачу:
- выполнение запроса
- обработка запроса
- передача данных клиенту
- вставка данных на клиенте
Неактивен
В самом простом случае, можно просто анимашку показывать - "аля запрос еще не умер"
Потому как расчитать сколько процентов осталось до окончания выборки из SQL... но может и далал кто - так поделитесь.
Неактивен
PooH написал:
А как почтенные питонеры реализуют подобные вещи: расчет по базе, массивные отчеты и т.д.
Пока имею такую идею: запустить отдельный процес, слушающий на отдельном порту, который ведет очередь задач, обработчик запроса обращается к нему, ставит задачу в очередь и возвращает форму с индикатором. после этого скрипт из броузера периодически запрашивает процент выполнения задачи.
Может есть варианты попроще?
Всё правильно. Только настолько долгоиграющие отчеты обычно по почте отправляются, а не браузером показываются. Т.е. да, запустить можно из браузера, но результат - по почте.
Неактивен

Чисто технологическая деталь.
Я делал XMLRPC сервер. На twisted.web. Но можно и на чем попроще.
Очень легко пишется, с протоколом общения проблем нет. А на более легковесный (бинарный, например) формат потом легко перейти. Обычно переходить не нужно - все и так хорошо ![]()
Отредактированно Андрей Светлов (2007-08-13 23:16:42)
Неактивен
pythonwin написал:
насчет процентов - как при выполнении запроса sql узнать на сколько он выполнился?
У меня расчет выполняется уже в приложении, в него периодически входят периодические значения ![]()
, в хранимки его вынести тяжко будет. Поэтому узнать количество обсчитываемых объектов это копейки по сравнению с временем расчета.
Неактивен
Андрей Светлов написал:
Чисто технологическая деталь.
Я делал XMLRPC сервер. На twisted.web. Но можно и на чем попроще.
Очень легко пишется, с протоколом общения проблем нет. А на более легковесный (бинарный, например) формат потом легко перейти. Обычно переходить не нужно - все и так хорошо
я пока думаю сделать наподобие Межпроцессная диспетчеризация событий в web-приложениях Python, часть 2
Неактивен