Как сделать web морду для выполнения python скриптов?
Добрый день.
Пытаюсь реализовать проект, по выгрузке отчетности через web интерфейс.
Пользователь заходит на Веб страницу, выбирает нужный ему отчет, делает фильтрацию (по дате например) и запускает отчет, который по исполнению выдает excel файл.
На данный момент у меня есть python скрипт, который подключается к нашей Oracle DB (с помощью cx_Oracle), выполняет SQL запрос, делает форматирование и сохраняет Excel файл.
Развернут Ubuntu сервер с Apache и mod_wsgi, собираюсь так же использовать Django для Webа. Скрипты на сервере через консоль отрабатываются. WSGI настроен (Django пока не прикручивал).
Теперь необходимо прикрутить к "кнопке" на web странице исполнение данного скрипта на сервере + как то выдать получившийся файл пользователю на скачивание.
В этом месте столкнулся с проблемой, либо копаю не в ту сторону, либо что-то делаю не так. Пытаюсь использовать WSGI, но не могу найти нормального примера выполнения сложного запроса, или запуска файла скрипта (всюду примеры Hello World).
Уважаемые Хабровцы, помогите пожалуйста советом.
Возможно не на той технологии зациклился.
Делаете вьюху, которая отображает текущую страницу где есть эта кнопка, в ней (во вьюхе) есть входящий параметр request. Вот его и смотрите. В этом параметре то, что вы передали, или если ничего не передали просто тогда запускаете нужную функцию во вьюхе и всё.
Если отчет генерируется долго или не стабильно по времени, то имеет смысл его "заказывать" через веб интерфейс, а потом скачивать готовый файл. В этом случае вам нужно сделать отдельную модель ТаскОтчета. Внутри неё записываются параметры построения отчета и статус готовности. Отдельный воркер на бэкенде смотрит регулярно на запрошенные отчеты и запускает ваш скрипт, после отработки обновляет статус задачи.
GUI для всего этого можно сделать на основе джанговских джинериков и админки.
Если нет никакой проблемы сгенерить отчет на лету, то сделайте хендлер прямо в вашем джанго, пусть дёргает ваш скрипт, генерит на лету отчет и выдает его как файл для скачивания с соответствующим MIME-типом. Можно повесить на обработчик кеширующий декоратор, чтобы не генерить один и тот же отчет слишком часто.
Мне больше нравится второй вариант, конечно.
Полагаю вам много не неясно из изложенного. Задавайте конкретные вопросы. Здесь помогут.