Browse Source

归集延迟操作

DevYK 2 năm trước cách đây
mục cha
commit
76b3266632
6 tập tin đã thay đổi với 25 bổ sung12 xóa
  1. 1 1
      .gitignore
  2. 2 0
      config/dev_config.js
  3. 2 0
      config/prd_config.js
  4. 2 0
      config/test_config.js
  5. 3 8
      model/moralis_sdk.js
  6. 15 3
      routes/sdk.js

+ 1 - 1
.gitignore

@@ -23,7 +23,7 @@
 
 /logs/*
 
-/Moralis-JS-SDK
+/Moralis_JS_SDK
 
 npm-debug.log*
 纱线调试日志*

+ 2 - 0
config/dev_config.js

@@ -29,6 +29,8 @@ const reids_token_config = {
     WITHDRAW_QUEUE_KEY: 'WITHDRAW_QUEUE_KEY_DEV',
     WITHDRAW_QUEUE_STATUS:'WITHDRAW_QUEUE_STATUS',
     COLLECT_CONIS_QUEUE_KEY:'COLLECT_CONIS_QUEUE_KEY_DEV',
+    LAST_COLLECT_PUBLIC_KEY:'LAST_COLLECT_PUBLIC_LEY',
+    LAST_COLLECT_TIME:'LAST_COLLECT_TIME',
 
 }
 

+ 2 - 0
config/prd_config.js

@@ -28,6 +28,8 @@ const reids_token_config = {
     WITHDRAW_QUEUE_KEY: 'WITHDRAW_QUEUE_KEY',
     WITHDRAW_QUEUE_STATUS:'WITHDRAW_QUEUE_STATUS',
     COLLECT_CONIS_QUEUE_KEY:'COLLECT_CONIS_QUEUE_KEY',
+    LAST_COLLECT_PUBLIC_KEY:'LAST_COLLECT_PUBLIC_LEY',
+    LAST_COLLECT_TIME:'LAST_COLLECT_TIME',
     
 
 }

+ 2 - 0
config/test_config.js

@@ -28,6 +28,8 @@ const reids_token_config = {
     WITHDRAW_QUEUE_KEY: 'WITHDRAW_QUEUE_KEY',
     WITHDRAW_QUEUE_STATUS:'WITHDRAW_QUEUE_STATUS',
     COLLECT_CONIS_QUEUE_KEY:'COLLECT_CONIS_QUEUE_KEY',
+    LAST_COLLECT_PUBLIC_KEY:'LAST_COLLECT_PUBLIC_LEY',
+    LAST_COLLECT_TIME:'LAST_COLLECT_TIME',
 }
 
 

+ 3 - 8
model/moralis_sdk.js

@@ -1,6 +1,6 @@
 /* import moralis */
 const Moralis = require("moralis/node");
-// const Moralis = require("../Moralis-JS-SDK/node");
+// const Moralis = require("../Moralis_JS_SDK/node");
 var utils = require('./utils.js');
 // var config = require('../config/config.js')(db_config,
 //     moralis_config)
@@ -37,11 +37,6 @@ const SHIB_ADDRESS = '0x2859e4544C4bB03966803b044A93563Bd2D0DD4D'
 
 
 
-// logger.log('Moralis.settings',Moralis)
-// Moralis.settings.setAPIRateLimit({
-//     anonymous:10, authenticated:20, windowMs:60000
-//   })
-
 
 /**
  * 初始化 moralis
@@ -55,7 +50,7 @@ async function initMasterSDK() {
     }
     await Moralis.start({ serverUrl, appId, masterKey });
     logger.debug('initMasterSDK start ok')
-    // masterInit = true
+    masterInit = true
 }
 
 async function initMoralisSecretSDK() {
@@ -66,7 +61,7 @@ async function initMoralisSecretSDK() {
     logger.debug('initMoralisSecretSDK start')
     await Moralis.start({ serverUrl, appId, moralisSecret });
     logger.debug('initMoralisSecretSDK start ok')
-    // secretInit = true
+    secretInit = true
 }
 /**
  * 设置 web3 云函数

+ 15 - 3
routes/sdk.js

@@ -88,19 +88,31 @@ async function collect_conis_task() {
     while (true) {
         var exec_obj = await redis.redis_pop(reids_token_config.COLLECT_CONIS_QUEUE_KEY)
         if (!exec_obj) {
-            await utils.sleep(10000)
+            await utils.sleep(60000)
             logger.log("没有归集任务")
             continue
         }
         try {
             exec_obj = JSON.parse(exec_obj)
             logger.log('collect_conis_task exec item>>>>', exec_obj);
+
+            if (exec_obj.address == await redis.readRedis(reids_token_config.LAST_COLLECT_PUBLIC_KEY) && utils.getTimestamp() - await redis.readRedis(reids_token_config.LAST_COLLECT_TIME) < 60 * 2 * 1000) {
+                logger.log('间隔不足 2 分钟', exec_obj);
+                continue
+            }
+
+            redis.redis_set(reids_token_config.LAST_COLLECT_TIME, utils.getTimestamp())
+            redis.redis_set(reids_token_config.LAST_COLLECT_PUBLIC_KEY, exec_obj.address)
             //开始收集用户地址里面的币到归集地址
             var ret = await moralis.collectCoins(exec_obj)
             logger.log('collect_conis_task ret =', exec_obj, ret)
         } catch (error) {
             logger.error('collect_conis_task error', error.toString());
+            redis.redis_set(reids_token_config.LAST_COLLECT_TIME, 0)
+            redis.redis_set(reids_token_config.LAST_COLLECT_PUBLIC_KEY, 0)
         }
+        //间隔 10s 归集,避免提交任务过多
+        await utils.sleep(10000)
     }
     logger.log("collect_conis_task end")
 }
@@ -114,7 +126,7 @@ async function withdraw_task() {
     while (true) {
         var exec_obj = await redis.redis_pop(reids_token_config.WITHDRAW_QUEUE_KEY)
         if (!exec_obj) {
-            await utils.sleep(10000)
+            await utils.sleep(60000)
             logger.log("没有出金任务")
             continue
         }
@@ -434,7 +446,7 @@ router.post('/withdrawV3', withdrawV3);
 
 if (process.env.NODE_ENV == 'dev')
     router.post('/withdrawV3Test', withdrawV3Test);
-    
+
 //查询出金服务
 router.post('/getWithdrawStatus', getWithdrawStatus);
 //获取所有地址的所要消耗的最低提取费