配置项
Exchange 配置

Exchange 配置

Exchange 接收用户提交的评测任务并将其交给 Composer,然后将 Composer 发送的评测报告反馈给用户。为了提升灵活性,评测系统允许用户配置多个 Exchange 共同工作。 目前,Seele 提供了两种 Exchange 的实现,为用户提供了多种与评测系统进行数据交互的方式,它们分别是 HTTP Exchange 和 AMQP Exchange。

配置接收一个字典,键为字符串表示 Exchange 的名称,值为两种类型之一的 Exchange 的配置,见下文。

HTTP Exchange

HTTP Exchange 开启一个 HTTP 端点监听用户发送的评测任务请求,请求体为 YAML 文本。它的配置如下表所示:

名称类型可选简介
type'http'指示 Exchange 类型为 HTTP Exchange
addressstringHTTP 端点监听的地址。默认值为 127.0.0.1
portnumberHTTP 端点监听的端口
max_body_size_bytesnumber接收的 HTTP 请求体的最大大小,超出大小限制的请求会被拒绝。单位为 Bytes。默认值为 8 MiB

HTTP Exchange 默认只会返回完成报告或错误报告,用户需要通过在请求的 Query params 中添加 progress=true 来额外获得进度报告。HTTP Exchange 会使用 \n 分隔返回的每条评测报告 JSON 数据。

AMQP Exchange

AMQP Exchange 采用流行的消息通信协议 Amqp 0.9.1 (opens in a new tab) 配合 RabbitMQ (opens in a new tab) 等消息队列实现评测任务的获取以及评测报告的输出。相比 HTTP Exchange,它是生产环境中应对大规模流量的更理想的方式。

请勿混淆 Seele 的 Exchange 概念和 Amqp 协议中的 Exchange 概念。

它的配置如下表所示:

名称类型简介
type'amqp'指示 Exchange 类型为 AMQP Exchange
urlstringAmqp 端点的 URL
submissionobject接收评测任务的相关配置,见下文
reportobject发送评测报告的相关配置,见下文

submission 配置

Seele 根据下表列出的配置,通过创建相应的队列使用 routing key 绑定到 exchange 来监听提交的评测任务。

名称类型简介
exchangeobjectAmqp exchange 配置,见下文
routing_keystring评测任务的 routing key
queuestring监听 exchange 信息的队列名
queue_optionsobject可选。监听 exchange 信息的队列设置。参见 generated.rs (opens in a new tab)

report 配置

Seele 根据下表列出的配置,向 exchange 使用相应的 routing key 发送评测报告。发送的信息体是 JSON 纯文本。

名称类型简介
exchangeobjectAmqp exchange 配置,见下文
report_routing_keystring发送完成报告或错误报告时使用的 routing key
progress_routing_keystring可选。发送进度报告时使用的 routing key。为空时不发送

exchange 配置

名称类型简介
namestringExchange 的名称
kindstring可选。Amqp exchange 的类型。参见 exchange.rs (opens in a new tab)
optionsobject可选。声明 Amqp exchange 的设置。参见 generated.rs (opens in a new tab)