我正在尝试使用Azure Functions解决方案实现文件转换。该转换可能需要很长时间,因此我不希望在调用服务器上等待响应。 我编写了一个立即返回响应的函数(以指示服务可用并开始转换),并在单独的线程中运行转换。回调URL用于发送转换结果。
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, Stream srcBlob, Binder binder, TraceWriter log)
{
log.Info($"C# HTTP trigger function processed a request. RequestUri={req.RequestUri}");
// Get request model
var input = await req.Content.ReadAsAsync<ConvertInputModel>();
//Run convert in separate thread
Task.Run( async () => {
//Read input blob -> convert -> upload output blob
var convertResult = await ConvertAndUploadFile(input, srcBlob, binder, log);
//return result using HttpClient
SendCallback(convertResult, input.CallbackUrl);
});
//Return response immediately
return req.CreateResponse(HttpStatusCode.OK);
}
新任务破坏绑定的问题。访问参数时我遇到了异常。那么如何在单独的线程中运行长时间操作?或者这种解决方案完全错误?