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 异步
37KB
324 行

纳苏 (Nāsu)
🧑🏻⚕️ 命令行工具,定期轮询远程地址以执行状态检查
动机
纳苏(来自日语 ナース [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 方法 | 是 | GET 、PATCH 、POST 、PUT 、DELETE |
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