#remote #check #addresses #perform #status #task #utility

bin+lib nasu

命令行工具,定期轮询远程地址以执行状态检查

4个版本

0.1.0 2021年3月4日
0.0.2 2021年1月22日
0.0.1 2021年1月21日
0.0.0 2021年1月21日

#1313 in 异步

MIT许可证

37KB
324

纳苏 (Nāsu)

🧑🏻‍⚕️ 命令行工具,定期轮询远程地址以执行状态检查

Crates.io Documentation Build Lint Tests

动机

纳苏(来自日语 ナース [Nāsu],意为护士),是一个命令行工具,用于定期检查远程地址。

用法

使用 cargo install 命令安装 nasu

cargo install nasu

创建一个 nasu.json 文件并执行 nasu

Nasu 将执行 nasu.json 中指定的任务,并在您的终端提供如下详细信息

Log Time        | Task            | HTTP. Status Code    | Req. Time       | Res. Time
==========================================================================================
1614824476370   | httpbin get     | 200                  | 1614824476081   | 1614824476369
1614824476438   | httpbin post    | 200                  | 1614824476081   | 1614824476438
1614824481220   | httpbin get     | 200                  | 1614824481084   | 1614824481220
1614824486226   | httpbin get     | 200                  | 1614824486085   | 1614824486226
1614824491221   | httpbin get     | 200                  | 1614824491085   | 1614824491221

术语

以下术语用于指代 nasu 的主要组件

服务

通过 Worker 执行任务的服务,服务由 nasu.json 文件中定义的任务创建。

Worker

负责执行任务的 Worker,持有与相关服务交互的逻辑。

任务

Worker 需要执行的操作步骤定义。在 nasu.json 文件中提供。

nasu.json 参考

nasu.json 是 Nasu 的默认配置文件。Nasu 在启动时解析此文件以初始化 Workers

nasu.json 文件由一个包含 Task 对象的数组组成,如下所示

// nasu.json
[
  {
    "id": "HTTPBIN POST Request",
    "type": "http",
    "task": {
      "interval": "* */10 * * * *"
    },
    "params": {
      "url": "http://httpbin.org/post",
      "method": "POST",
      "headers": {
        "authorization": "Bearer <Token>",
        "content-type": "application/json"
      }
    }
  }
]

每个 Task 必须包含以下属性

属性 描述 必需 可能值
id 服务的ID。用作用户参考 不适用
type 要执行检查的服务类型 http
task 任务配置 不适用
task.interval Cron 定义指定何时执行测试 不适用
params 在 perform 中使用的 Worker 参数。请参阅 Worker 参数 不适用

任务 interval 字段

秒 分钟 小时 月份中的天 星期 月份 星期几 年份

任务中的 interval 字段使用 cron 定义。

 ┌────────────── second (0 - 59)
 │ ┌───────────── minute (0 - 59)
 │ │ ┌───────────── hour (0 - 23)
 │ │ │ ┌───────────── day of the month (1, 15)
 │ │ │ │ ┌───────────── month (Mon, Wed, Fri)
 │ │ │ │ │ ┌───────────── day of the week (Mon,Wed,Fri)
 │ │ │ │ │ │ ┌──────────── year
 │ │ │ │ │ │ │
 │ │ │ │ │ │ │
 * * * * * * *

示例

0 30 9,12,15 1,15 May-Aug Mon,Wed,Fri 2018/2

此应用程序内部使用 cron crate 解析和计算时间间隔。

Worker 参数

Worker 参数可能因特定工人的 type 而有所不同。以下定义的属性属于 Task 对象中 params 属性指定的对象。

HTTP Worker 参数

  • 类型:http
  • 属性:params
属性 描述 必需 可能值
url 执行 HTTP 请求的 URL 不适用
method 执行请求的 HTTP 方法 GETPATCHPOSTPUTDELETE
headers 提供给请求的 HTTP 头部 不适用

发布

要创建发布,您必须按照以下方式推送 Git 标签

git tag -a <version> -m <message>

示例

git tag -a  v0.1.0 -m "First release"

标签必须遵循 SemVer 规范,并且必须以前缀小写 v 字母开头。

然后按照以下方式推送标签

git push origin main --follow-tags

依赖项

~10-23MB
~352K SLoC