Может ли остановка демона испортить мои данные? - PullRequest
2 голосов
/ 17 декабря 2010

Я использую delayed_job для запуска некоторых фоновых процессов в моем приложении rails.Эти процессы читают и записывают в БД, а также записывают в файл журнала.

Мой вопрос: когда я прекращаю работу, это убивает процесс (что может привести к повреждению моих данных) илиждать окончания работы или что-то в этом роде?

1 Ответ

2 голосов
/ 17 декабря 2010

Все зависит от того, как вы написали свой код.

Как правило, убийство работы приводит к тому, что код дергается, и он немедленно останавливается. Это может быть в середине записи или до того, как буфер будет очищен или файл изящно закрыт.

Если у вас есть задачи, которые нужно выполнить, вы можете перехватывать сигналы. Ваш код может затем выбрать игнорирование сигнала и продолжить работу, что не является оптимальным решением, или он может начать корректно завершать работу, сбрасывать буферы, закрывать соединения с БД, закрывать файлы и т. Д. С последующим выходом.

И причина, по которой игнорирование сигнала не является хорошей, заключается в том, что ОС посылает некоторые из них, чтобы сообщить приложениям о завершении работы до выключения или перезапуска системы. Приложения, которые не закрываются, могут разозлить пользователя или системного администратора, который затем найдет способ СДЕЛАТЬ его, скорее всего, неблагодарным способом.

Проверьте Сигнал для получения дополнительной информации.

...