Перейти к содержанию

Планировщик задач в Masonite

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

Это автоматизированные повторяющиеся задачи, которые необходимо запускать по расписанию, например, каждую минуту, каждый час, каждый день, каждый месяц.

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

Задачи - это то, что вы используете для регистрации в планировщике Masonite, чтобы он знал, какие задачи запускать и как часто.

Чтобы создать задачу, просто выполните команду:

python craft task SendInvoices

Она создаст задачу, которая будет выглядеть так:

from masonite.scheduling import Task


class SendInvoices(Task):
    def handle(self):
        pass

Вы можете изменить задачу, чтобы она делала то, что вам нужно:

from masonite.scheduling import Task


class SendInvoices(Task):
    def handle(self):
      users = User.have_invoices().get()
      for user in users:
        # отправить счет пользователю
        pass

Регистрация задач

Затем вы должны зарегистрировать задачи в планировщике Masonite. Сделать это нужно внутри вашего приложения Service Provider (если у вас его нет, вы должны создать его):

from masonite.providers import Provider
from app.tasks.SendInvoices import SendInvoices


class AppProvider(Provider):

    def register(self):
        self.application.make('scheduler').add(
            SendInvoices().daily()
        )
Задачи будут запускаться так часто, как вы укажете, используя параметры времени.

Параметры

Задачи будут запускаться так часто, как вам нужно.

Доступные параметры:

Параметр Описание
every_minute() Указывает, что эта задача будет запускаться каждую минуту.
every_15_minutes() Указывает, что эта задача будет запускаться каждые 15 минут.
every_30_minutes() Указывает, что эта задача будет запускаться каждые 30 минут.
every_45_minutes() Указывает, что эта задача будет запускаться каждые 45 минут.
hourly() Указывает, что эта задача будет запускаться каждый час.
daily() Указывает, что эта задача будет запускаться каждый день в полночь.
weekly() Указывает, что эта задача будет запускаться каждую неделю в воскресенье в 00:00.
monthly() Указывает, что эта задача будет запускаться каждый первый день месяца в 00:00.
at(17) Указывает время запуска задачи. Может использоваться с другими параметрами, такими как daily().
run_every('7 minutes') Указывает время запуска задачи. Может быть любой комбинацией времени, например, 7 месяцев, 4 дня, 3 недели.
daily_at(17) Запускается каждый день в указанное время. Время указывается в 24-часовом формате. 8 - "8 утра", а 17 - "5 вечера".
at_twice([8,17]) Запускается в 8 утра и 5 вечера.

Запуск задач

Чтобы запустить все зарегистрированные задачи, мы можем найти и выполнить те, которые должны запускаться в зависимости от времени компьютера/сервера:

python craft schedule:run

Чтобы запустить только определенную зарегистрированную задачу, мы можем использовать параметр --task:

python craft schedule:run --task MyTask