как настроить перезапуск стратегии через 5 секунд в Erlang / Elixir? - PullRequest
0 голосов
/ 03 ноября 2018

В Erlang / Elixir, он может перезапустить ребенка, когда ребенок упал.
У меня есть gen_server, который содержит соединение с базой данных.
Я хочу завершить процесс, если не удается установить соединение, и перезапустить его через 5 секунд (или более сложный регулярный режим, такой как первый перезапуск - 100 мс, второй раз - 500 мс, третий - 1 с ...).

Как настроить диспетчер для обработки времени перезапуска?
По умолчанию gen_server будет пытаться бесконечно перезапускаться.

1 Ответ

0 голосов
/ 03 ноября 2018

Вам нужно будет обрабатывать эту логику (называемую «экспоненциальный откат») в своем собственном коде, потому что Supervisor просто обрабатывает мониторинг и перезапуск дочерних элементов.

Есть несколько пакетов, которые могут помочь в этом, вы можете найти на https://hex.pm (поиск exponential backoff)

Но также проверьте клиент / библиотеку базы данных, большинство из них обрабатывают это из коробки - по крайней мере, все, что использует библиотеку db_connection, как большинство клиентов ecto, mongodb и т. Д.

Итак, вы должны иметь возможность просто настроить конфигурацию для своего клиента базы данных, и все должно просто работать.

...