Форум сайта python.su
Есть WSGI приложение. Запускается в uWSGI. Приложение построено так, что если worker uWSGI “погибнет” в определённом месте(например от нагрузки), то не выполнит запрос доконца и не успеет убрать значение из БД, что в дальнейшем нарушит работу всему приложению(пока значение не уберёшь из БД).
Что думаете? Это критическая архитектурная ошибка, которая снижает отказоустойчивость?
Или просто нужно стремиться, чтобы workerы не “падали”, а такая особенность приложения вполне приемлема в реальности?
Офлайн
Budulianinthis
Это критическая архитектурная ошибка, которая снижает отказоустойчивость?
Офлайн
s0rg?
this
s0rgЯ думаю что ничего, ведь запрос отработает до конца, просто отдать его будет некому.
Что будет если клиент начнет запрос, но отвалится/отсоединится?
Офлайн
BudulianinУказание, что по моему мнению, именно этот вариан правильный )
?
BudulianinУ вас воркеры не перезапускаются?
воркер может упасть
Офлайн
s0rgПерезапускаются, но это никак не влияет, потому что воркер умер в неподходящий момент :) и оставил в БД, то что должен был убрать.
У вас воркеры не перезапускаются?
s0rgМожет, у него даже настройки есть на этот случай, убивать воркеров, если главный процесс умер.
Uwsgi не может упасть?
s0rgКак проверить правильно? Чем сделать запрос, чтобы его оборвать в нужный момент?
И не факт, что воркер будет отрабатывать до конца, в случае отвалившегося клиента.
s0rgНе знаю подойдёт такой вариант или нет, надо подумать.
Для критичных данных есть очереди, отдавайте задачу, о записи важных для вас данных
s0rgЕго я и хотел получить.
Но это мое мнение )
Офлайн
BudulianinВставить sleep в интерисующий обработчик?
Как проверить правильно? Чем сделать запрос, чтобы его оборвать в нужный момент?
BudulianinЕсть - посмотрите в сторону emperor, если я правильно понял идею.
Может, у него даже настройки есть на этот случай, убивать воркеров, если главный процесс умер.
Офлайн
s0rgПока он спит, убить процесс, который сделал запрос?
Вставить sleep в интерисующий обработчик?
s0rgЭто не идея:), просто сказал про возможности uWSGI.
Есть - посмотрите в сторону emperor, если я правильно понял идею.
Офлайн
BudulianinДа, именно.
Пока он спит, убить процесс, который сделал запрос?
Офлайн
s0rgСпасибо за ответы.
Да, именно.
s0rgonly Pyramid :)
flask?
Офлайн
BudulianinЗа него не скажу, но у flask есть специальный обработчик всех ошибок, типа финализатор запроса, возможно, что-то подобное есть и в пирамиде.
only Pyramid
Отредактировано s0rg (Авг. 21, 2014 18:01:52)
Офлайн