给出以下情况:
新作业通过 Post Request 发送到 API。此 API 返回 JobID 和 HTTP ResponseCode 202。
然后使用此 JobID 请求状态端点。如果端点在响应正文中设置了“已完成”属性,则可以继续执行第 3 步。
结果通过使用 JobID 的结果端点进行查询,并且可以进行处理。
我的问题是如何优雅而干净地解决这个问题。也许已经有现成的库可以实现这个功能?我找不到 RestSharp 或其他 HttpClient 的此类功能。当前的解决方案如下所示:
async Task<string> PostNewJob()
{
var restClient = new RestClient("https://baseUrl/");
var restRequest = new RestRequest("jobs");
//add headers
var response = await restClient.ExecutePostTaskAsync(restRequest);
string jobId = JsonConvert.DeserializeObject<string>(response.Content);
return jobId;
}
async Task WaitTillJobIsReady(string jobId)
{
string jobStatus = string.Empty;
var request= new RestRequest(jobId) { Method = Method.GET };
do
{
if (!String.IsNullOrEmpty(jobStatus))
Thread.Sleep(5000); //wait for next …Run Code Online (Sandbox Code Playgroud)