Планировщик задач в Masonite
Masonite имеет невероятно простой способ запуска задач по расписанию. Задачи могут быть такими, как очистка записей в таблице базы данных каждую минуту, синхронизация записей между базами данных или отправка счетов в конце месяца.
Это автоматизированные повторяющиеся задачи, которые необходимо запускать по расписанию, например, каждую минуту, каждый час, каждый день, каждый месяц.
Создание задач
Задачи - это то, что вы используете для регистрации в планировщике Masonite, чтобы он знал, какие задачи запускать и как часто.
Чтобы создать задачу, просто выполните команду:
Она создаст задачу, которая будет выглядеть так:
Вы можете изменить задачу, чтобы она делала то, что вам нужно:
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 вечера. |
Запуск задач
Чтобы запустить все зарегистрированные задачи, мы можем найти и выполнить те, которые должны запускаться в зависимости от времени компьютера/сервера:
Чтобы запустить только определенную зарегистрированную задачу, мы можем использовать параметр --task
: