golang CoPilot开发

调用其他语言编写的CoPilot

go-copilot开发

在NJET中需要启动Go 开发的外部二进制程序时,可以通过加载NJET提供的 njt_helper_go_copilot_module 模块,并指定外部go二进制程序使用的配置文件。

njt_helper_go_copilot_module 将解析Toml格式文件,并获取配置文件中设置的可执行文件路径,如果是相对路径,将添加$NJT_PREFIX 前缀,该前缀通过启动NJET 时使用 -p 方式传入,默认值是编译时传入的 –prefix, rpm/deb安装时该路径是 /usr/local/njet。

njt_helper_go_copilot_module 获取到文件路径后,将通过 njt_execute 启动并执行对应的外部文件。

通过ps 查看时,将看到copilot 进程是启动的go 外部程序的父进程。

img img

Go copilot 配置文件中如果可执行文件名没有配置, 将不启动对应的go copilot, 且不会重试,需要提供正确配置后再重启NJET。

NJET配置

使用 helper 指令加载NJET 提供的 njt_helper_go_copilot_module 模块,并提供配置文件,例如:

helper goProgName /usr/local/njet/modules/njt_helper_go_copilot_module.so conf/go_prog_config.toml;

Go copilot 规范

命令行参数

需要能够解析以下两个参数

-p prefix (NJET 实例的 prefix 路径)

-c full_conf_name (完整路径的配置文件名)

配置文件

配置文件使用TOML格式,Toml 中需要有 copilot 配置项:

  • copilotType

copilot 类型,控制面提供的配置修改api 将根据这个字段用对应的lua 逻辑进行处理

  • progName

progName 是copilot 需要启动的外部go 可执行文件名

progName 可以是绝对路径或相对路径

相对路径的话,启动 prog 时,需要加上 NJET 的 prefix

可选的配置项:

  • stdoutFile

通过go copilot 启动后标准输出的重定向文件,不配置的时候使用 /dev/null

  • stderrFile

通过go copilot 启动后标准错误的重定向文件,不配置的时候使用 /dev/null

Toml 中的其它配置项由具体的go 程序解析及使用

[copilot]
progName="sbin/registry-sync"
copilotType="regsync"  
stdoutFile="logs/regsync_out.log"  
stderrFile="logs/regsync_err.log