Уведомление о переводе ИИ

Эта документация была автоматически переведена ИИ.

CronJobManager — Управление запланированными задачами

CronJobManager — это менеджер запланированных задач, предоставляемый NocoBase и основанный на библиотеке cron. Он позволяет плагинам регистрировать запланированные задачи на сервере для периодического выполнения определённой логики.

Базовое использование

import { Plugin } from '@nocobase/server';

export default class PluginCronDemo extends Plugin {
  async load() {
    this.app.cronJobManager.addJob({
      cronTime: '0 0 * * *', // Выполняется ежедневно в 00:00
      onTick: async () => {
        console.log('Ежедневная задача: очистка временных данных');
        await this.cleanTemporaryData();
      },
      timeZone: 'Asia/Shanghai',
      start: true, // Автоматический запуск
    });
  }

  async cleanTemporaryData() {
    // Здесь реализуйте логику очистки
  }
}

Описание параметров

Тип CronJobParameters определён следующим образом (из cron):

export declare interface CronJobParameters {
  cronTime: string | Date | DateTime;
  onTick: CronCommand;
  onComplete?: CronCommand | null;
  start?: boolean;
  timeZone?: string;
  context?: any;
  runOnInit?: boolean;
  utcOffset?: string | number;
  unrefTimeout?: boolean;
}
ПараметрТипОписание
cronTimestring | Date | DateTimeВыражение времени для запланированной задачи. Поддерживает стандартные cron-выражения, например, 0 0 * * * означает выполнение ежедневно в 00:00.
onTickfunctionОсновная функция задачи. Будет вызвана в указанное время.
onCompletefunctionВыполняется, когда задача остановлена методом job.stop() или после завершения функции onTick.
timeZonestringУказывает часовой пояс выполнения (например, Asia/Shanghai).
contextanyКонтекст выполнения функции onTick.
runOnInitbooleanСледует ли выполнить задачу один раз сразу при инициализации.
utcOffsetstring | numberУказывает смещение часового пояса.
unrefTimeoutbooleanОпределяет, должен ли цикл событий оставаться активным.

Примеры Cron-выражений

ВыражениеЗначение
* * * * *Выполняется каждую минуту
0 * * * *Выполняется каждый час
0 0 * * *Выполняется ежедневно в 00:00
0 9 * * 1Выполняется каждый понедельник в 09:00
*/10 * * * *Выполняется каждые 10 минут

💡 Вы можете использовать crontab.guru для помощи в создании выражений.

Управление запуском и остановкой задач

const job = app.cronJobManager.addJob({ ... });
job.start(); // Запустить задачу
job.stop();  // Остановить задачу
Tip

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