내 전자 상거래 사이트에 ~ 3000 개의 제품 CSV를 업로드하는 것이 목표입니다. 내 e-comm 플랫폼에서 제공하는 REST API를 활용하여 내가 만들 수있는 미래의 사이트를 위해 재사용 및 구축 할 수있는 무언가를 갖고 싶습니다. 내가 문제를 통해 작업을 데REST API를 통한 대량 업로드
내 주요 문제는 다음과 같습니다 - 나는 단지 POST를 통해 모든 3K 기록을 통해이 처리하는 데 걸리는 시간에 속성 수 System.Threading.ThreadAbortException
의뢰. 내 코드 :
public ActionResult WriteProductsFromFile()
{
string fileNameIN = "19107.txt";
string fileNameOUT = "19107_output.txt";
string jsonUrl = $"/api/products";
List<string> ls = new List<string>();
var engine = new FileHelperAsyncEngine<Prod1>();
using (engine.BeginReadFile(fileNameIN))
{
foreach (Prod1 prod in engine)
{
outputProduct output = new outputProduct();
if (!string.IsNullOrEmpty(prod.name))
{
output.product.name = prod.name;
string productJson = JsonConvert.SerializeObject(output);
ls.Add(productJson);
}
}
}
foreach (String s in ls)
nopApiClient.Post(jsonUrl, s);
return RedirectToAction("GetProducts");
}
}
나는 웹 코딩에 익숙하지 않으므로 잘못된 방향으로 가고 있습니까? 대량 업로드를 위해 내가 선호하지 않는 방법이 있습니까?
TaskCreationOptions.LongRunning 플래그를 사용하려고했는데, 그 원인을 약간은 돕지 만 내 목표를 달성하지 못합니다.
'public ActionResult WriteProductsFromFile()'의 코드는 원래 요청이 들어온 스레드를 가지고 있다는 것을 알아야합니다. 클라이언트의 연결이 끊어지면 일반적으로 호스트 (Kestrel/IIS)는 상대방에서 듣고있는 내용이 없음을 감지합니다. API가 '가져 오기 시작'메시지를 수락하고 백엔드 장기 실행 프로세스 (예 : 서비스/데몬)가 실제로 모든 내보내기를 수행하는 대기열 처리 시스템을 활용하면됩니다. – zaitsman