Если подробнее, то для одной части я должен использовать процессы и сразу перезапускать их, а для другой треды и ничего не перезапускать.
Сначала думал может можно как то сконфигурировать гуникорн так, что для одних эндпоинтов одни правила, для других другие. Не нашел ничего подобного. Потом стал смотреть в сторону нескольких приложений, которые двумя командами поднимаются. Но тогда нужно их на разных портах поднимать, что тоже не желательно.
Есть ли какой то вариант без использования нгинкса и других прокси сделать то что я хочу на одном порте? Чтобы на одном ресурсе один конфиг гуникорна был, на другом другой?
gunicorn ничего не знает про эндпоинты. роутинг это уже ответственность приложения, которое крутится внутри gunicorn
Мб я не совсем понял, в чем вообще проблема, маловато информации, если тебе нужны процессы для обработки чего-то тяжелого, ты можешь использовать ProcessPoolExecutor, не обязательно гуникорну процессы открывать
Мне нужны процессы и сразу перезапускать их, потому что я использую либу gdal, у которой какие то проблемы с питоном и в мультитрединге начинает память течь по пока что непонятным причинам. Плюс она очень cpu bound. Но другая часть приложения использует безопасную часть этой либы, в которой память не течет, плюс нужно много препроцессинга делать, т.е. много работы на этапе загрузки приложения (загрузить огромный файл с диска). И эта часть приложения должна работать быстро, хотелось бы сэкономить хотя бы на препроцессинге. Вот и получается, что мне нужны разные конфиги. Может конечно можно как то не через гуникорн запускать обработку в отдельном процессе и чтобы по окончанию процесс перезапускался, но мне показалось, что это что-то сомнительное.
> Мне нужны процессы и сразу перезапускать их, потому что я использую либу gdal, у которой какие то проблемы с питоном и в мультитрединге начинает память течь по пока что непонятным причинам. Плюс она очень cpu bound. Почему бы эту часть действительно не вынести в отдельный фоновый сервис. Не ясно только зачем эта часть должна быть WSGI приложением.
Это не обязательно wsgi, просто мне нужно апи и я вот пользуюсь фреймворками, которые упрощают его создание. Может я тебя не так понял... Можешь пояснить по-подробнее?
Взять какую-нибудь простую очередь сообщений и вынести CPU-bound процессинг в отдельный воркер.
А ну я понял. Да, идея хорошая, я тоже к ней пришел, просто подумал что можно временно как то решить попроще.
А что можно использовать для упрощения этого, чтобы воркер запускался на какое то сообщение и потом завершался?
Обсуждают сегодня