npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cron-extend

v0.2.8

Published

Cron jobs manager

Downloads

3

Readme

Cron-extend

Информация

Сервис для запуска задаяч в формате cron

Оглавление:

Запуск и установка

установка как утилиту: npm i cron-extend -g

пример #1 строки запуска: node /cron-extend/app.js -c config.toml

пример #2 строки запуска: cron-extend --config config.toml

Таблица ключей запуска

Ключ | Описание ------------ | ------------- --version, -v | вывести номер версии приложения --help, -h | вызвать справку по ключам запуска --config, -c | путь к файлу конфигурации в формате toml или json, (переменная среды: CRON_EXTEND_CONFIG_PATH)

Конфигурация

Программа настраивается через файл конфигурации форматов TOML, JSON, YML и YAML. Так же можно настраивать через переменные среды, которые будут считаться первичными.

Секции файла конфигурации

  • logger - настрока логгера (переменная среды: CRON_EXTEND_LOGGER)
  • logger.output - (переменная среды: CRON_EXTEND_LOGGER_OUTPUT)
  • api - активация API сервера (переменная среды: CRON_EXTEND_API)
  • manager - настройки cron-manager (переменная среды: CRON_EXTEND_MANAGER)

Пример файла конфигурации config.toml

[logger]
    levels = ["fatal","info","error","warn","debug","trace"]            # уровни логирования
    [logger.bindings]                                                   # дополнительные ключи
        key1 = "key1-val"
        key2 = "key2-val"
    [logger.output]                                                     # настройка отображения
        timestamp = "full"                                              # вывод времени full, short, unix и none
        levels = ["fatal","info","error","warn","debug","trace"]        # вывод типов
        bindings = "no-wrapper"                                         # отображение ключей square, bracket, none, no-wrapper

[api]
    enable = false              # активация API сервера
    hostname = "0.0.0.0"        # хост          
    port = 3001                 # порт
    backlog = 511               # очередь баклога
    prefix = "/api"             # префикс
    connection_timeout = 0      # таймаут сервера в милисекундах
    keep_alive_timeout = 5000   # таймаут keep-alive сервера в милисекундах
    body_limit = 1048576        # максимальный размер тела запроса в байтах
    trust_proxy = false         # доверие proxy закголовку

[manager]                       # настройки cron-manager
    jobs_path = "jobs"          # путь до папки задач
    tags = []                   # теги сервера
    [manager.env]               # дополнительные переменые среды
        CONFIG_ENV_KEY1 = "CONFIG_ENV_KEY1_VALUE"
        CONFIG_ENV_KEY2 = "CONFIG_ENV_KEY2_VALUE"
        CONFIG_ENV_KEY3 = "${CONFIG_ENV_KEY3}"

Таблица параметров конфигурации

| Параметр | Тип | Значение | Описание | | ----- | ----- | ----- | ----- | | logger.levels | строка[] | "fatal","info","error","warn","debug","trace" | уровни логирования | | logger.bindings | объект | {} | дополнительные ключи | | logger.output.timestamp | строка | full | вывод времени full, short, unix и none | | logger.output.levels | строка[] | "fatal","info","error","warn","debug","trace" | вывод типов | | logger.output.bindings | строка | no-wrapper | отображение ключей square, bracket, none, no-wrapper | | api.enable | логический | false | активация API сервера | | api.hostname | строка | 0.0.0.0 | хост | | api.port | число | 3001 | порт | | api.backlog | число | 511 | очередь баклога | | api.prefix | строка | /api | префикс | | api.connection_timeout | число | 0 | таймаут сервера в милисекундах | | api.keep_alive_timeout | число | 5000 | таймаут keep-alive сервера в милисекундах | | api.body_limit | число | 1048576 | максимальный размер тела запроса в байтах | | api.trust_proxy | логический | false | доверие proxy закголовку | | manager.jobs_path | строка | jobs | путь до папки задач | | manager.tags | строка[] | [] | теги сервера | | manager.env | объект | {} | дополнительные переменые среды |

Настройка через переменные среды

Ключи конфигурации можно задать через переменные среды ОС. Имя переменной среды формируется из двух частей, префикса CRON_EXTEND_ и имени переменной в верхнем реестре. Если переменная вложена, то это обозначается символом _. Переменные среды имеют высший приоритет.

пример для переменной api.enable: CRON_EXTEND_API_ENABLE

Настройка задач

Задачи настраиваются через файл конфигурации форматов TOML, JSON, YML и YAML. Папка с задачами настраивается в секции файла настройки manager

Пример файла конфигурации job.toml

enable = true                       # активация задачи
description = "job description"     # описание задачи
timeout = "60s"                     # таймаут выполнения, единицы s,m,h,d (пример: 1m20s)
tags = []                           # теги для запуска
cwd = "cwd_folder"                  # рабочая папка
command = "executer"                # команда запуска
args = [                            # аргументы
    "arg1",
    "arg2",
    "arg3"
]
[env]                               # дополнительные переменые среды
    JOB_KEY1 = "JOB_KEY1_VALUE"
    JOB_KEY2 = "JOB_KEY2_VALUE"
    JOB_KEY3 = "${JOB_ENV_KEY3}"
[cron]                              # настройка крона
    interval = "1 * * * * *"        # интервал
    time_zone = "Europe/Moscow"     # временая зона

API

Сервис предоставляет API, который настраивается в секции файла настройки api. API доступно по протоколу HTTP.

Примеры применения

проверить доступность сервера: curl -i http://localhost:3001/api/healthcheck или curl -i http://localhost:3001/api/

API информации сервиса

| URL | Метод | Код | Описание | Пример ответа/запроса | | ----- | ----- | ----- | ----- | ----- | | / | GET | 200 | проверить здоровье сервиса | OK | | /healthcheck | GET | 200 | проверить здоровье сервиса | OK | | /v1/info | GET | 200 | получить информацию по задачам | пример | | /v1/status | GET | 200 | получить только статус по задачам | пример |

Примеры ответов/запросов

Базовый ответ провала

Этот ответ возвращается при отказе выполнения запроса. Пример:

{
    "status": "fail",
    "message": "Причина отказа"
}

Базовый ответ ошибки

Этот ответ возвращается при ошибке на сервере. Пример:

{
    "status": "error",
    "message": "Причина ошибки"
}

Получить информацию по задачам: /v1/info

[
    {
        "enable": false,
        "description": "description job1.yml",
        "command": "empty",
        "timeout": "60s",
        "tags": [],
        "cwd": "C:\\progs\\cron-extend",
        "args": [],
        "env": {
            "CONFIG_ENV_KEY1": "CONFIG_ENV_KEY1_VALUE",
            "CONFIG_ENV_KEY2": "CONFIG_ENV_KEY2_VALUE",
            "CONFIG_ENV_KEY3": "CONFIG_ENV_KEY3_VALUE"
        },
        "cron": {
            "interval": "1 * * * * *",
            "time_zone": "Europe/Moscow"
        },
        "executing": false,
        "id": "job1.json",
        "error": false,
        "error_message": ""
    },
    {
        "enable": true,
        "description": "json job 2",
        "timeout": "60s",
        "tags": [],
        "cwd": "C:\\progs\\cron-extend",
        "command": "1",
        "args": [],
        "env": {
            "JOB_KEY1": "JOB_KEY1_VALUE",
            "JOB_KEY2": "JOB_KEY2_VALUE",
            "JOB_KEY3": "JOB_ENV_KEY3_VALUE",
            "CONFIG_ENV_KEY1": "CONFIG_ENV_KEY1_VALUE",
            "CONFIG_ENV_KEY2": "CONFIG_ENV_KEY2_VALUE",
            "CONFIG_ENV_KEY3": "CONFIG_ENV_KEY3_VALUE"
        },
        "cron": {
            "interval": "1 * * * * *",
            "time_zone": "Europe/Moscow"
        },
        "executing": false,
        "id": "job2.toml",
        "error": true,
        "error_message": "Error: spawn 1 ENOENT"
    }
]

Получить только статус по задачам: /v1/status

[
    {
        "id": "job1.json",
        "enable": false,
        "description": "description job1.yml",
        "executing": false,
        "error": false,
        "error_message": ""
    },
    {
        "id": "job2.toml",
        "enable": true,
        "description": "json job 2",
        "executing": false,
        "error": true,
        "error_message": "Error: spawn 1 ENOENT"
    }
]