Отслеживайте и перезапускайте процесс Dart на сервере

Мой легкий веб-сервер на основе dart:io выглядит примерно так:

import 'dart:io';

void main() {

  HttpServer.bind(InternetAddress.ANY_IP_V4, 80).then((server) {
    server.listen((HttpRequest request) {
      // ... do stuff...
      request.response.write('Alright, here is your response...'); 
      request.response.close();
    });
  }); 

  print("listing...."); 

}

Запустим его (на Ubuntu Server 1.04):

$ nohup dart myServer.dart &
Listening...

Пока все выглядит хорошо. Я могу выйти из своей оболочки, и она продолжает служить. Однако, если что-то пойдет не так, например. выбрасывается необработанное исключение - процесс Dart завершается.

Любые рекомендации, как контролировать процесс Dart и перезапускать его при необходимости? Думаю, я мог бы написать для этого простой скрипт, просто интересно, есть ли лучший/рекомендуемый способ?

(Хостинг в Apache через mod_dart может быть вариантом — хотя это кажется излишним, а текущая версия нестабильна. )


person Max♦    schedule 11.11.2013    source источник


Ответы (2)


рассмотреть следующие инструменты:

  1. http://supervisord.org/ Supervisor — это клиент-серверная система, позволяющая пользователям отслеживать и контролировать ряд процессов в UNIX-подобных операционных системах.

  2. http://upstart.ubuntu.com/ Upstart — это основанная на событиях замена демона /sbin/init. который обрабатывает запуск задач и служб во время загрузки, останавливает их во время выключения и контролирует их во время работы системы.

выберите тот, который лучше всего соответствует вашим потребностям, эти инструменты в любом случае отлично подходят для вашего набора инструментов

person Guy Gavriely    schedule 11.11.2013

Я использую Monit в своем экземпляре GCE Debian, прост в настройке и имеет приятный небольшой веб-интерфейс для облегчения управления.

person user2685314    schedule 28.11.2013