簡體   English   中英

通過REST API批量上傳

[英]Bulk upload via REST api

我的目標是將約3000條記錄的產品CSV上傳到我的電子商務網站。 我想利用我的電子通訊平台提供的REST API,這樣我就可以重用某些東西,並在以后可能創建的網站上使用。

我遇到的主要問題是: -System.Threading.ThreadAbortException

我只能將其歸因於通過POST請求處理所有3K記錄所花費的時間。 我的代碼:

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標志,該標志可以稍有幫助,但不能使我接近目標。

Web和api控制器操作並不打算執行長期運行的任務-除了鎖定UI /線程外,您還將引入一系列失敗的機會,而這些失敗的機會很少。

但是您在這里有很多選擇並不都是壞事,關於異步/雲架構的文獻很多-解釋了如何處理文件和這種情況。

您要做的是從API請求中斷開文件處理(在您的應用程序中不是第三方)

這將需要更多的工作,但最終將創建一個更可靠的應用程序。

第1步:

立即將文件拖放到磁盤上-我看到您已經在DISK上擁有該文件,但不確定如何到達該文件,但是無論哪種方式,它都可以正常工作。

第2步:

使用運行方式為
-控制台應用程序(最簡單)
-服務(需要某種服務的安裝/卸載)
-甚至是您的網絡應用中的一個線程(但是您將很難知道它何時會失敗)

無論選擇哪種方式,該過程都會監視目錄中文件的更改,發生更改時,它將啟動您的方法來根據您的喜好愉快地處理文件。

在這里查看FileSystemWatchers是一個基本示例: https : //www.dotnetperls.com/filesystemwatcher

另外:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM