ДокументацияВычисленияЗадачи по расписанию

Задачи по расписанию

Задача по расписанию — команда, которая автоматически выполняется внутри контейнера вашего сервиса в заданное время. Удобный способ регулярно обслуживать приложение без внешних скриптов и серверов.

Типичные сценарии#

  • Очистка временных файлов и кэша.
  • Рассылка уведомлений и дайджестов.
  • Импорт и синхронизация данных с внешними системами.
  • Пересчёт отчётов и агрегатов.
  • Регулярные команды фреймворка (планировщики, обработчики очередей).

Создание задачи#

  1. 1
    Откройте вкладку Schedules
    Сервис → вкладка Schedules. В списке видны все задачи: название, расписание, команда, состояние и время последнего запуска.
  2. 2
    Заполните форму
    Нажмите Добавить задачу, заполните поля (описаны ниже) и нажмите Сохранить — задача создаётся уже включённой.
  3. 3
    Проверьте задачу вручную
    Не ждите наступления расписания: нажмите Запустить сейчас. Появится уведомление «Задача запущена вручную», а результат будет виден на вкладке Logs сервиса.

Поля формы

FieldDescription
НазваниеКороткое имя, по которому вы узнаете задачу в списке. Например cleanup-temp или daily-report.
Расписание (cron)Готовый вариант — каждые 5 минут, каждый час, каждые 6 часов, каждый день в 00:00, раз в неделю (вс), раз в месяц (1-е) — или своё выражение.
ShellИнтерпретатор, в котором выполняется команда: bash по умолчанию или sh, если образ минимальный и bash в нём нет.
КомандаСтрока, которая выполняется внутри контейнера — в рабочей директории приложения и со всеми его переменными окружения.

Формат cron состоит из пяти полей: минута час день месяц день_недели.

ВыражениеКогда выполняется
*/5 * * * *каждые 5 минут
0 * * * *в начале каждого часа
0 4 * * *каждый день в 04:00
15 2 * * 1-5по будням в 02:15
0 0 1 * *1-го числа каждого месяца в полночь

Примеры команд

bash
php artisan schedule:run
node scripts/cleanup.js
find /data/tmp -type f -mtime +7 -delete

Управление задачами#

FieldDescription
ПереключательВременно отключить задачу, не удаляя её.
Запустить сейчасВнеочередное выполнение команды.
ИзменитьПоменять название, расписание, shell или команду.
УдалитьУбрать задачу окончательно.

Важные особенности#

  • Задача выполняется внутри запущенного контейнера. Если сервис остановлен, запуск не произойдёт.
  • Время расписания указывается в UTC — учитывайте разницу с вашим часовым поясом.
  • Задача не должна выполняться дольше интервала между запусками, иначе запуски начнут накладываться друг на друга.
  • Долгие тяжёлые операции лучше выносить в отдельный сервис-воркер.
  • Вывод команды попадает в общие логи сервиса — добавляйте понятные сообщения, чтобы легче было разбираться.
Задача и cron-сервис — не одно и то же
Задача по расписанию выполняет команду внутри существующего сервиса. Cron-сервис — отдельный контейнер, который запускается по расписанию и завершается.

Частые вопросы#

Почему задача не запустилась?

Проверьте, что сервис работает, задача включена и расписание указано в UTC. Затем посмотрите вкладку Logs — команда могла завершиться с ошибкой.

Как узнать, что команда отработала успешно?

Нажмите Запустить сейчас и сразу откройте Logs: вы увидите вывод команды и код завершения.

Можно ли запускать задачи для базы данных?

Задачи по расписанию доступны для приложений и стеков. Для регулярного сохранения данных базы используйте резервные копии.