Уведомления об ошибках cron-задач и worker
Cron-задача или worker может отправлять в Депешер сообщение при ошибке, чтобы ответственный специалист увидел его в почте или мессенджере. Решение о том, что считать ошибкой и когда уведомлять, принимает ваш скрипт.
Настройте канал для ошибок
Сначала создайте и подтвердите исходящий канал для получателя. Затем создайте входящий канал, например «Ошибки фоновых задач», и свяжите каналы. Установите CLI от имени пользователя, который запускает задачу, и добавьте запись worker_errors с публичным адресом входящего канала в его конфиг.
Проверьте отправку под этим же пользователем:
bash
depesher -v worker_errors "Проверка уведомлений фоновой задачи"Оберните команду задачи
Пример для Bash: сохраните скрипт как /home/user/jobs/run-import.sh и замените пути своей рабочей директорией, интерпретатором и CLI.
bash
#!/usr/bin/env bash
if (
cd /home/user/jobs &&
/usr/bin/python3 import.py
); then
task_status=0
else
task_status=$?
if ! /home/user/.local/bin/depesher worker_errors \
"Ошибка импорта на сервере данных. Код: $task_status. Проверьте журнал import.log"; then
printf '%s\n' 'Не удалось отправить уведомление об ошибке импорта' >&2
fi
fi
exit "$task_status"Скрипт уведомляет только о неуспешном запуске, сохраняет его код и не пересылает весь журнал. Укажите в сообщении операцию, сервер или окружение и место, где искать подробности.
Добавьте запуск в cron
Пример записи в пользовательском crontab для запуска каждый день в 03:00 по часовому поясу, используемому cron:
text
0 3 * * * /bin/bash /home/user/jobs/run-import.sh >> /home/user/jobs/import.log 2>&1Каталоги должны существовать, а пользователь задачи — иметь право читать скрипт и писать журнал. Используйте абсолютные пути: окружение cron может отличаться от открытого терминала. CLI читает depesher.toml из системного каталога конфигурации пользователя запуска; точный путь можно узнать командой depesher --config-path. На Unix файлу нужны права 0600.
Как применить к постоянному worker
Для worker, который обрабатывает задания непрерывно, разместите отправку в обработчике ошибки отдельного задания. В уведомление добавьте идентификатор задания и тип сбоя. После отправки сохраняйте принятую в приложении обработку ошибки: повторную попытку, запись в журнал или завершение процесса.
Если одно задание повторяется, ограничьте частоту уведомлений в логике worker, чтобы каждая попытка не создавала одинаковое сообщение.
Проверьте обнаружение ошибки
В тестовой копии замените команду задачи на false: должно прийти уведомление об ошибке. При true уведомления быть не должно. Запустите проверку от пользователя cron, а затем верните рабочую команду.
Этот способ сообщает о сбое выполненной команды. Если cron вообще не запустил задачу или процесс был принудительно остановлен до обработчика, сообщение не отправится. Проверка отсутствующих запусков требует отдельной логики контроля.
Другие проблемы с запросом и получателями описаны в диагностике доставки.