@Alex_Cat
Начинающий web разработчик (Python)

Как сделать web морду для выполнения python скриптов?

Добрый день.
Пытаюсь реализовать проект, по выгрузке отчетности через web интерфейс.
Пользователь заходит на Веб страницу, выбирает нужный ему отчет, делает фильтрацию (по дате например) и запускает отчет, который по исполнению выдает excel файл.

На данный момент у меня есть python скрипт, который подключается к нашей Oracle DB (с помощью cx_Oracle), выполняет SQL запрос, делает форматирование и сохраняет Excel файл.
Развернут Ubuntu сервер с Apache и mod_wsgi, собираюсь так же использовать Django для Webа. Скрипты на сервере через консоль отрабатываются. WSGI настроен (Django пока не прикручивал).

Теперь необходимо прикрутить к "кнопке" на web странице исполнение данного скрипта на сервере + как то выдать получившийся файл пользователю на скачивание.
В этом месте столкнулся с проблемой, либо копаю не в ту сторону, либо что-то делаю не так. Пытаюсь использовать WSGI, но не могу найти нормального примера выполнения сложного запроса, или запуска файла скрипта (всюду примеры Hello World).

Уважаемые Хабровцы, помогите пожалуйста советом.
Возможно не на той технологии зациклился.
  • Вопрос задан
  • 722 просмотра
Решения вопроса 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Если отчет генерируется долго или не стабильно по времени, то имеет смысл его "заказывать" через веб интерфейс, а потом скачивать готовый файл. В этом случае вам нужно сделать отдельную модель ТаскОтчета. Внутри неё записываются параметры построения отчета и статус готовности. Отдельный воркер на бэкенде смотрит регулярно на запрошенные отчеты и запускает ваш скрипт, после отработки обновляет статус задачи.
GUI для всего этого можно сделать на основе джанговских джинериков и админки.

Если нет никакой проблемы сгенерить отчет на лету, то сделайте хендлер прямо в вашем джанго, пусть дёргает ваш скрипт, генерит на лету отчет и выдает его как файл для скачивания с соответствующим MIME-типом. Можно повесить на обработчик кеширующий декоратор, чтобы не генерить один и тот же отчет слишком часто.

Мне больше нравится второй вариант, конечно.

Полагаю вам много не неясно из изложенного. Задавайте конкретные вопросы. Здесь помогут.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@conopus
QAA
Джанго - избыточно, на мой взгляд. Я бы Flask взял или что-то такое же легковесное. WSGI там под капотом, и заглядывать туда не обязательно.
Ответ написан
@Alex_Cat Автор вопроса
Начинающий web разработчик (Python)
Хотел использовать Джанго из-за авторизации, на будущее. На сколько я понимаю мою задачу можно решить напрямую силами Джанго и трогать WSGI не нужно? (или я чего-то недопонял).

Из вариантов, которые описал Сергей, мне больше подходит первый, т.к. все таки время далеко не стабильно.
Я так до конца и не понял, каким образом запускать сам скрипт из Джанго? С помощью subprocess? На счет воркера тоже не понял. Буду гуглить.

Заранее извиняюсь за глупые вопросы, это мой первый проект и работаю я над ним сам, спросить не у кого.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы