构建您自己的自托管瘦客户端#

概述#

瘦客户端和 CLI 提供了访问 cuOpt 服务的便利性,但这些只是关于如何与 cuOpt 服务通信的参考。如果您想创建自己的瘦客户端,下面讨论了 API 的底层细节。

注意

请不要使用 cuopt_self_host_client.pycuopt_sh_client.py 作为您的瘦客户端名称,只是为了避免在您从 pypi 安装了 cuopt 瘦客户端时产生混淆。

调用 cuOpt 服务#

当负载是文件时发送 cuOpt 请求#

requestBody 包含一个 JSON 对象,该对象将由 cuOpt 处理。

以 JSON 数据作为直接字符串的示例

1curl --location 'http://ip:port/cuopt/requests' \
2--header 'Content-Type: application/json' \
3-d 'JSON_DATA'

以 JSON 数据作为文件的示例

1curl --location 'http://ip:port/cuopt/requests' \
2--header 'Content-Type: application/json' \
3--header 'CUOPT-DATA-FILE: data_file_path' \
4-d '{}'

JSON_DATA 应遵循为 cuOpt 输入描述的 Open-API 规范

cuOpt 结果检索#

cuOpt 服务采用异步接口进行调用和结果检索。当您发出调用请求时,系统会将您的问题提交给求解器并返回一个请求 ID。

1{
2 "reqId": "ef4c1967-d543-467c-af7e-8c7899d75be8",
3}

轮询响应

您必须轮询请求 ID 以获取响应。响应可能包含解决方案,或者可能包含错误。

1curl --location 'http://ip:port/cuopt/requests/{request-id}'
  • HTTP 状态 200 已完成结果

  • HTTP 状态 202 轮询响应

  • HTTP 状态 4xx 用于任何服务器级别故障

为了获得最佳性能,期望客户端在确定不再需要与服务器进行进一步通信之前,不会关闭连接。