Перейти к содержимому

Генератор Cron-выражений

Визуально создаёт cron-выражения с пресетами и следующими запусками.

0 0 * * *

Читаемое описание

Runs every day at midnight

Об этом инструменте

Cron-выражения — это стандартный синтаксис для планирования задач в Unix-подобных системах, базах данных и веб-приложениях. Поскольку они используют пять или шесть полей для представления шаблонов минут, часов, дней, месяцев и дней недели, их лаконичный формат затрудняет их правильное написание. Этот инструмент устраняет эту сложность, предоставляя визуальный интерфейс, в котором вы можете выбрать нужное расписание с помощью интуитивных раскрывающихся меню и переключателей, а затем сразу же увидеть соответствующее cron-выражение и время следующего выполнения.

Чтобы использовать инструмент, сначала выберите желаемую частоту планирования из распространённых предустановок, таких как «Каждую минуту», «Каждый час», «Ежедневно в определённое время» или «Пользовательский режим». После выбора предустановки или пользовательского варианта отрегулируйте конкретные ограничения по времени или дате с помощью интерактивных элементов управления. Инструмент мгновенно генерирует стандартный синтаксис cron-выражения и отображает время следующего выполнения, что позволяет легко проверить расписание перед развёртыванием в вашем приложении. Это особенно полезно при настройке фоновых задач, задач обслуживания баз данных или автоматических отчётов, где точность имеет решающее значение.

Часто задаваемые вопросы

Реализация кода

import re

def describe_cron(expression: str) -> str:
    """Parse a cron expression and return a plain-text description."""
    parts = expression.strip().split()
    if len(parts) != 5:
        raise ValueError("Expected 5 fields: minute hour day month weekday")

    minute, hour, day, month, weekday = parts

    def field(val, unit):
        if val == "*": return f"every {unit}"
        if val.startswith("*/"):
            return f"every {val[2:]} {unit}s"
        if "," in val:
            return f"{unit}s {val}"
        if "-" in val:
            lo, hi = val.split("-")
            return f"from {unit} {lo} to {hi}"
        return f"at {unit} {val}"

    months = ["", "Jan", "Feb", "Mar", "Apr", "May", "Jun",
              "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
    days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]

    parts_desc = [
        field(minute, "minute"),
        field(hour, "hour"),
        field(day, "day-of-month"),
        field(month, "month"),
        field(weekday, "weekday"),
    ]
    return ", ".join(parts_desc)

# Examples
print(describe_cron("0 9 * * 1-5"))   # Every weekday at 9 AM
print(describe_cron("*/15 * * * *"))  # Every 15 minutes
print(describe_cron("0 0 1 * *"))     # First day of every month at midnight

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.