Browse Source

getTransactions getBalances 做了重试机制

DevYK 2 năm trước cách đây
mục cha
commit
d03fe3bc7e
2 tập tin đã thay đổi với 93 bổ sung53 xóa
  1. 91 51
      model/moralis_sdk.js
  2. 2 2
      routes/sdk.js

+ 91 - 51
model/moralis_sdk.js

@@ -170,21 +170,33 @@ async function getAccountBalances(options) {
         options.chain = utils.getChainName(options.chain)
     }
     logger.log('getAccountBalances :', options)
-    try {
-        if (options.type == 'native') {
-            var opt_ret = await Moralis.Web3API.account.getNativeBalance(options);
-            logger.log('getNativeBalance=', opt_ret);
-            return opt_ret
-        } else {
-            var aar = await Moralis.Web3API.account.getTokenBalances(options);
-            logger.log('getTokenBalances=', aar);
-            return aar;
-        }
-    } catch (error) {
-        logger.error('getBalances error:', error.toString(), JSON.stringify(options))
-        return null
-    }
 
+
+    //做 1次 重试
+    //Error: Request failed with status code 524
+    //Error: Request failed with status code 500
+    var tryCount = 2;
+    var result;
+    do {
+        try {
+            if (options.type == 'native') {
+                result = await Moralis.Web3API.account.getNativeBalance(options);
+                logger.log('getNativeBalance=', result);
+            } else {
+                result = await Moralis.Web3API.account.getTokenBalances(options);
+                logger.log('getTokenBalances=', result);
+            }
+            break
+        } catch (error) {
+            if (tryCount == 1) {
+                logger.error('getBalances error:', error.toString(), JSON.stringify(options))
+                result = null;
+            }
+            tryCount -= 1;
+            await utils.sleep(1000)
+        }
+    } while (tryCount >= 1);
+    return result
 }
 
 /**
@@ -897,31 +909,53 @@ async function getTokenTransfers(opt) {
 
         var t_1
         var t_2
-        //主流币
-        try {
-            logger.log('getTokenTransfers account getTransactions>>>>>', options);
-            t_1 = await Moralis.Web3API.account.getTransactions(options);
-            logger.log('getTokenTransfers native ret -->>> t_1', t_1);
-            setTransfersDataType('native', t_1.result)
-        } catch (error) {
-            logger.error("getTransactions error:", '主流币:', error.toString(), JSON.stringify(options))
-            return toJson(ERROR_CODE_001, null, error.toString());
-        }
 
-        //20币
-        try {
-            //token 获取交易记录如果没有时间有些地址会失败
-            if (!options.to_block) {
-                options.to_block = '10000000000'
+
+        // Error: Request failed with status code 524
+        // 做一次重试
+        var tryCount = 2
+        do {
+            //主流币
+            try {
+                logger.log('getTokenTransfers account getTransactions>>>>>', options);
+                t_1 = await Moralis.Web3API.account.getTransactions(options);
+                logger.log('getTokenTransfers native ret -->>> t_1', t_1);
+                setTransfersDataType('native', t_1.result)
+                break
+            } catch (error) {
+                if (tryCount == 1) {
+                    logger.error("getTransactions error:", '主流币:', error.toString(), JSON.stringify(options))
+                    return toJson(ERROR_CODE_001, null, error.toString());
+                }
+                tryCount -= 1;
+                await utils.sleep(1000)
             }
-            logger.log('getTokenTransfers account getTokenTransfers>>>>>', options);
-            t_2 = await Moralis.Web3API.account.getTokenTransfers(options);
-            logger.log('getTokenTransfers token ret -->>> t_2', t_2);
-            setTransfersDataType('token', t_2.result)
-        } catch (error) {
-            logger.error("getTransactions error:", 'token币:', error.toString(), JSON.stringify(options))
-            return toJson(ERROR_CODE_001, null, error.toString());
-        }
+        } while (tryCount >= 1);
+
+
+        // Error: Request failed with status code 524
+        tryCount = 2
+        do {
+            //20币
+            try {
+                //token 获取交易记录如果没有时间有些地址会失败
+                if (!options.to_block) {
+                    options.to_block = '10000000000'
+                }
+                logger.log('getTokenTransfers account getTokenTransfers>>>>>', options);
+                t_2 = await Moralis.Web3API.account.getTokenTransfers(options);
+                logger.log('getTokenTransfers token ret -->>> t_2', t_2);
+                setTransfersDataType('token', t_2.result)
+                break
+            } catch (error) {
+                if (tryCount == 1) {
+                    logger.error("getTransactions error:", 'token币:', error.toString(), JSON.stringify(options))
+                    return toJson(ERROR_CODE_001, null, error.toString());
+                }
+                tryCount -= 1;
+                await utils.sleep(1000)
+            }
+        } while (tryCount >= 1);
 
         //异常
         if (t_2 && t_2.total > 0 && Array.isArray(t_2.result) && t_2.result.length <= 0) {
@@ -955,20 +989,26 @@ async function getTokenTransfers(opt) {
             return toJson(ERROR_CODE_001, null, error.toString());
         }
     } else if (options.type == 'transaction_hash') {//根据哈希查询
-        try {
-            logger.log('transaction_hash getTransaction options-->>> ', options);
-            //native
-            const transaction = await Moralis.Web3API.native.getTransaction(options);
-            var arr = [];
-            if (transaction)
-                arr.push(transaction)
-            var obj = { result: arr }
-            logger.log('transaction_hash getTransaction ret-->>> ', transaction, obj);
-            return toJson(SUCCEED_CODE, obj, null);
-        } catch (error) {
-            logger.error("native getTransaction error:", error.toString(), JSON.stringify(options))
-            return toJson(ERROR_CODE_001, null, error.toString());
-        }
+        var tryCount = 2
+        do {
+            try {
+                logger.log('transaction_hash getTransaction options-->>> ', options);
+                //native
+                const transaction = await Moralis.Web3API.native.getTransaction(options);
+                var arr = [];
+                if (transaction)
+                    arr.push(transaction)
+                var obj = { result: arr }
+                logger.log('transaction_hash getTransaction ret-->>> ', transaction, obj);
+                return toJson(SUCCEED_CODE, obj, null);
+            } catch (error) {
+                if (tryCount == 1) {
+                    logger.error("native getTransaction error:", error.toString(), JSON.stringify(options))
+                    return toJson(ERROR_CODE_001, null, error.toString());
+                }
+                tryCount -= 1;
+            }
+        } while (tryCount >= 1);
     } else {
         return toJson(ERROR_CODE_001, null, "This type is not supported.");;
     }

+ 2 - 2
routes/sdk.js

@@ -148,8 +148,8 @@ async function withdraw_task() {
                                 logger.log('等待10s');
                                 await utils.sleep(10000)
                             } else {
-                                logger.log('等待10s');
-                                await utils.sleep(10000)
+                                logger.log('等待5s');
+                                await utils.sleep(5000)
                                 break
                             }
                         } else {