Пишу в Development, потому что это всё-таки не веб ни разу.
У меня есть пачка скриптов на питоне, каждый из которых вызывает цепочку внешних утилит и генерирует бинарный выходной файл. Время работы скрипта ~2-3 минуты, большую часть которого (99%) он проводит в ожидании завершения дочерних процессов.
Я хочу сделать из этих скриптов HTTP-сервер, т. е. вместо
python3 ./script1.py --foo=bar > output
писать
curl -fsSL http://localhost:8000/script1 -G -d foo=bar -o output
Я набросал прототип на http.server
, но мне не нравится, что приходится заниматься разбором URL и ещё много чего делать вручную. Плюс я бы хотел уметь обрабатывать несколько запросов одновременно. Да, я знаю про GIL, но поскольку большая часть работы происходит во внешних процессах, как минимум в теории GIL не должен мешать.
Так вот, как это сделать?
- Посоветуйте минимальный HTTP-фреймворк, который бы занимался принятием запросов, разбором URL и обработкой эксепшенов, без какой-либо связи с вебом?
- Часть про «несколько запросов одновременно» делать через асинхронщину или через потоки? Существуют ли асинхронные эквиваленты
subprocess.run
/subprocess.Popen
?