-
Notifications
You must be signed in to change notification settings - Fork 12
API Run
lanrongqi edited this page Mar 19, 2021
·
2 revisions
从v2.2.1版本开始,支持直接使用StartJudgement()方法直接执行一次评测。
首先,安装deer-executor的最新版本
$ go get github.com/LanceLRQ/deer-executor/v2
然后调用StartJudgement方法,相当于是调用了deer-executor run
功能。示例代码:
package main
import (
"fmt"
"github.com/LanceLRQ/deer-executor/v2/common/logger"
"github.com/LanceLRQ/deer-executor/v2/common/utils"
"github.com/LanceLRQ/deer-executor/v2/client/run"
)
func main() {
runOption := run.JudgementRunOption{
Clean: true,
ShowLog: false,
LogLevel: logger.LogLevelDebug,
WorkDir: "/www/data/problems/1001",
ConfigFile: "/www/data/problems/1001/problem.json",
Language: "auto",
LibraryDir: "/www/data/libs",
CodePath: "/www/data/codes/1.c",
SessionID: "",
SessionRoot: "",
Persistence: nil,
}
_, rel, err := run.StartJudgement(&runOption)
if err != nil {
panic(err)
}
fmt.Println(utils.ObjectToJSONStringFormatted(rel))
}
func StartJudgement(options *JudgementRunOption) (*executor.JudgeSession, *commonStructs.JudgeResult, error)
由于StartJudgement会自动完成一次评测操作,原则上不要再去操作JudgeSession了。这里返回是方便你在某些情况下去获取一些信息。另外若Clean没有启用,你可以在评测结束后调用session.Clean()清理会话。
type JudgementRunOption struct {
Persistence *persistence.JudgeResultPersisOptions // 持久化选项
Clean bool // true则自动清理会话目录
ConfigFile string // 配置文件路径
WorkDir string // 工作目录路径
ShowLog bool // 是否在控制台打印日志(一般关闭即可)
LogLevel int // 打印日志等级(开启控制台打印日志后有效)
Language string // 评测语言(auto为自动按文件后缀检测)
LibraryDir string // Lib文件夹,用于特殊评测下和checker等一起编译。非特殊评测可以留空,否则报错。
CodePath string // 被测代码路径
SessionID string // 会话ID,留空会自动生成一个UUID代替
SessionRoot string // 会话工作目录,留空默认/tmp,可以自定义
}
type DigitalSignPEM struct {
PublicKey *rsa.PublicKey
PrivateKey *rsa.PrivateKey
PublicKeyRaw []byte
PrivateKeyRaw []byte
}
type JudgeResultPersisOptions struct {
DigitalSign bool // 是否启用数字签名
DigitalPEM *DigitalSignPEM // PEM 数字证书信息
OutFile string // 持久化最终输出的文件路径
CompressorType uint8 // 压缩方式,传1会使用GZIP,其他值默认不压缩
SessionDir string // 评测会话目录
SaveAcceptedData bool // 是否保存已经AC的数据
}
© 2018 - 2021 LanceLRQ,All rights reserved.