我有一些處理時間很長的程序,客戶端不需要立即回應。我試過下面的代碼沒有成功。
[HttpPost, Route("run")]
public async Task Run()
{
_ = this.LongProcess().ConfigureAwait(false);
return await Task.CompletedTask;
}
該服務仍然需要一些時間,直到我的 LongProces 完成后再回傳給客戶。如何使 Run 方法及時回傳客戶端?
uj5u.com熱心網友回復:
如何讓 Run 方法及時回傳客戶端?
您需要一個基本的分布式架構。我推薦:
- 持久存盤系統,例如 Azure 佇列或 AWS 簡單佇列服務。
- 一個獨立的處理器,例如 Azure Functions 或 AWS Lambdas。
然后,您的 API 將訊息排入佇列并回傳:
[HttpPost, Route("run")]
public async Task Run()
{
var message = new Message();
await _queueService.EnqueueAsync(message);
return;
}
并且獨立的處理器將訊息出列并處理它們:
async Task HandleMessage(Message message)
{
await LongProcess().ConfigureAwait(false);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/422411.html
標籤:
