Найти - Пользователи
Полная версия: Долгоиграющие запросы
Начало » Pyramid / Pylons / TurboGears » Долгоиграющие запросы
1
PooH
А как почтенные питонеры реализуют подобные вещи: расчет по базе, массивные отчеты и т.д.

Пока имею такую идею: запустить отдельный процес, слушающий на отдельном порту, который ведет очередь задач, обработчик запроса обращается к нему, ставит задачу в очередь и возвращает форму с индикатором. после этого скрипт из броузера периодически запрашивает процент выполнения задачи.

Может есть варианты попроще?
pythonwin
сложные запросы делал на чистом SQL и передавал виджету, который превращал это дело в html-таблицу и если ajax, то отдавал
return dict(table_html = Table.render()) b на стороне клиента вставлял в div или другой тег, а пока загружалась табличка выводил на экран рисунок gif с прогрессбаром

насчет процентов - как при выполнении запроса sql узнать на сколько он выполнился?

PS предлагаю разбить на части эту задачу:
- выполнение запроса
- обработка запроса
- передача данных клиенту
- вставка данных на клиенте
dem
В самом простом случае, можно просто анимашку показывать - “аля запрос еще не умер” :) Потому как расчитать сколько процентов осталось до окончания выборки из SQL… но может и далал кто - так поделитесь.
j2a
PooH
А как почтенные питонеры реализуют подобные вещи: расчет по базе, массивные отчеты и т.д.

Пока имею такую идею: запустить отдельный процес, слушающий на отдельном порту, который ведет очередь задач, обработчик запроса обращается к нему, ставит задачу в очередь и возвращает форму с индикатором. после этого скрипт из броузера периодически запрашивает процент выполнения задачи.

Может есть варианты попроще?
Всё правильно. Только настолько долгоиграющие отчеты обычно по почте отправляются, а не браузером показываются. Т.е. да, запустить можно из браузера, но результат - по почте.
Андрей Светлов
Чисто технологическая деталь.
Я делал XMLRPC сервер. На twisted.web. Но можно и на чем попроще.
Очень легко пишется, с протоколом общения проблем нет. А на более легковесный (бинарный, например) формат потом легко перейти. Обычно переходить не нужно - все и так хорошо :)
PooH
pythonwin
насчет процентов - как при выполнении запроса sql узнать на сколько он выполнился?
У меня расчет выполняется уже в приложении, в него периодически входят периодические значения :)
, в хранимки его вынести тяжко будет. Поэтому узнать количество обсчитываемых объектов это копейки по сравнению с временем расчета.
PooH
Андрей Светлов
Чисто технологическая деталь.
Я делал XMLRPC сервер. На twisted.web. Но можно и на чем попроще.
Очень легко пишется, с протоколом общения проблем нет. А на более легковесный (бинарный, например) формат потом легко перейти. Обычно переходить не нужно - все и так хорошо :)
я пока думаю сделать наподобие Межпроцессная диспетчеризация событий в web-приложениях Python, часть 2
PyCraft
PooH
после этого скрипт из броузера периодически запрашивает процент выполнения задачи.
А если задача состоит из одного SQL сапроса, как Вы собираетесь определять процент ее выполнения?
PooH
PyCraft
А если задача состоит из одного SQL сапроса, как Вы собираетесь определять процент ее выполнения?
Никак :) В таком случае буду оптимизировать базу под запрос
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