все это можно делать ?
Зависит от железа. Во фалск нет асинхронности (вернее на пол шишки). Можно, разве что, воркеры бахнуть в гуникорне.
да у меня по сути там железа сильно не надо) там моделька под рекомендации, она по запросу должна из матрицы считать значение и отдавать) Я думаю если 4-5 воркеров поднять, то проблемы не будет)
gunicorn рекомендует (2 x $num_cores) + 1
все воркеры стартуют при запуске
Крайний вопрос, а если на воркере прям во фласке планировщих воткну, который будет глобальную переменную пересчитывать - норм практика? или в память если ушел процесс, то изменение глобавльной только на перезапуске произойдет? и вообще норм правктика такая на питоне или не?)
Делать так категорически нельзя. У тебя значение переменной в каждом воркере будет свое. Если тебе нужен какой-то счетчик - юзай редис
На каждый воркер по идее должен быть отдельный процесс. А у каждого процесса будет своя область памяти. И даже если захочешь разделить память между процессами, то это нужно делать очень осознанно и осторожно. Но это не тот случай, коммент про редис выше - 👍
Мне не счетчик нужен, мне надо чтобы каждый воркер стейт машину содержал с состоянием модели и видел, что если модель пересчиталась, то перегружал в глобал новую. Соответвественно не страшно, елси в какой то момент воркеры будут рассинхронены на несколько минут
редис еще 1 сетевой узелок, который не хочу использовать, усложняя архитектуру) но в целом идея понятна) благодарю)
Обсуждают сегодня