簡體   English   中英

NetSuite Restlet超時限制問題如何解決?

[英]How to solve the issue of NetSuite Restlet timeout limit issue?

現在我第一次使用 NetSuite Restlet。 我從 saveSearch 中檢索到以下數據。

{
  "recordType": "receipt",
  "id": "sample-id",
  "values": {
    "customer.customerid": "sample-id",
    "customer.customercompany": "sample-customercompany", 
    "customer.addressone": "sample-addressone",
    "customer.addresstwo": "sample-addresstwo",
    "customer.addresscity": "sample-addresscity",
    "customer.addressstate": "sample-addressstate",
    "country": "Australia",
    "transacitionrecordid": "sample-id",
    "unit": "Dollar",
    "total": "120"
  }
}

而且我必須循環結果集並將每條記錄推送到數組並在最后返回數組。 沒有我可以刪除的字段。 必須包括所有字段。

問題是記錄的數量大約是 31,000。 當我運行我的腳本時,執行時間超過 5 分鍾,這是 Restlet 執行時間限制。 這是我的腳本。

define(['N/search'], function(search) {
  function get(event) {
    var saved = search.load({ id: "search-id" });
    var searchResultSet = saved.run();
    
    var results = [];
    var start = 0;
    
    do {
      searchRecords = searchResultSet.getRange({ start: start, end: start + 1000 });
      start = start + 1000;
      results.concat(searchRecords);
    } while(results.length);

    return JSON.stringify(results); // return as string for now to see the output on browser
  }
  
  return {
    get: get
  };
})

這就是我的腳本的樣子。

理想情況下,我調用此腳本一次並返回全部 31,000 條數據記錄。

但是,由於執行限制,我正在考慮傳遞一個參數(用作指針?索引?光標)並將此變量傳遞給getRange function 作為起始索引。 我已經測試過,我可以調用 10,000 條記錄。 因此,通過傳遞 0、10000、20000 之類的參數來調用此腳本 3 次。

但是有沒有更好的方法來解決這個問題? 我真正想要的是只調用這個腳本一次並返回 31,000 條記錄而不會出現超時問題。

請問我有什么建議嗎? 非常感謝您提前。

聽起來您需要一個 map 減少腳本類型。 我不確定您要達到的總體結果是什么,但總的來說 MapReduce 腳本是為處理大量數據而編寫的。

可以安排腳本,或者您可以使用 N/Task 觸發它(如果您想從 RESTLET 觸發它,這似乎是您所需要的)

MapReduce 腳本有 4 個原生函數。 每個 function 每次觸發時都有自己的使用限制,這使其非常適合處理此類大量數據。 第一個用於生成數據集(您可以返回搜索:return search.create({}))第二個用於對數據進行分組 - 每個搜索結果都會運行一次。 第三是在數據上執行代碼——它會為每個從前一個函數傳遞的唯一鍵運行一次。 四是總結劇本。 您可以在此處捕獲錯誤等。

對於第一個要查詢的 function 而言,31k 結果可能會很大,在這種情況下,您可以將其拆分為多個部分。 例如,獲得多達 5k 個結果,然后在匯總中檢查是否還有更多結果要處理以及是否再次觸發腳本(為此,您將需要多次部署和事務上的標記來告訴您它是更新或保存最后處理的數據塊的全局字段)

暫無
暫無

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

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