-
Notifications
You must be signed in to change notification settings - Fork 3
Graceful shutdown #29
Comments
Обсудили, решили сделать следующее:
|
Проблема с закрытием приложения.В функции main мы подписываем В случае получения SIGHUP, SIGINT, SIGTERM, SIGQUIT, SIGCHILD При получении Workers или завершаются в течение shutdown_timeout (если получили SIGTERM) или делают request После того, как завершение workers закончено, actix_web ждет еще 300ms и выключает текущую систему Actix (при exit = true), в которой может еще работать код закрытия Room. Закрытие Суть проблемы
Возможные варианты решенияНасколько я знаю, мы не можем добавить свои классы к worker'ам Можно запретить actix_web реагировать на закрывающие сигналы, и потом выключить систему, но тогда actix_web workers не смогут shut down gracefully Можно сохранить . Я предлагаю 3-й вариант. Тогда есть 2 варианта:
Я предлагаю 2 вариант |
@nWacky ,
Не совсем уловил в чем различие с текущей реализацией. Сейчас сервер сам подписывается на сигнал и бросает в себя
В такой формулировке смысл появляется. Сначала уведомляем наши компоненты, ждем пока они ответят что закрылись, потом перекидываем сигнал серверу, который закроет систему. |
Part of 0.2.0 Roadmap (#8)
PR: #30, #37
Background
В данный момент, в случае завершения приложения все ws клиенты получат close code 1006 (отсутствие close frame). Так как этот код также может быть получен в случае "обрыва" соединения, он будет вести к попыткам реконнекта со стороны клиента.
Problem to solve
Требуется разработать мехнизм graceful shutdown в случае получения сигналов завершающих приложение: SIGHUP, SIGINT, SIGTERM, SIGQUIT. В рамках которого все ws-клиенты будут закрываться со статусом 1000.
Possible solutions
Для подписки на сигналы следует использовать actix::actors::signal.
The text was updated successfully, but these errors were encountered: