Назад | Перейти на главную страницу

Изящное завершение процесса ruby ​​при завершении работы Windows

У меня есть машина с Windows 2012 r2 с запланированным рубиновым процессом, который запускается каждую минуту - иногда завершается через несколько секунд, а иногда - около 5 минут.

То, что я пытаюсь достичь, - это иметь возможность выключить машину, ожидая завершения процесса (если он запущен) перед фактически отключение. Завершение работы необходимо инициировать извне (например, через вызов API AWS).

Есть ли способ сделать это?

Я пробовал несколько разных вещей, но безрезультатно:

Я также вижу, что программы Windows могут подключаться к определенным событиям Windows (например: CTRL_SHUTDOWN_EVENT) и возвращают значения, чтобы сказать, продолжать ли завершение работы, но я немного не понимаю, как можно подключиться к этому в процессе ruby. Возможно, его можно обернуть в какую-нибудь программу для Windows, чтобы это разрешить?

Вы используете неправильный механизм Windows для того, чего хотите достичь. Я бы переписал процесс ruby ​​как службы Windows, чтобы Windows сообщала службе о завершении работы.

В качестве альтернативы вы можете запланировать дополнительную задачу «При выключении», которая останавливает выполняющуюся задачу Ruby и выполняет некоторый чистый выход, как вы бы написали в своей задаче Ruby.