123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- const robot = require('./robot')
- const web = require('./web')
- const {logger} = require("./utils/logger");
- const {tr} = require("date-fns/locale");
- const path = require("path");
- const file = require("./utils/file");
- const {getRustConfig} = require("./config");
- const http = require("./utils/http");
- function init() {
-
- reportDel()
- reportSearchPositions()
- reportAmount()
- cacheLogs()
- cachePredictorState()
- logger.info('--定时任务 启动');
- }
- function reportNodeStatus() {
- const intervalInMilliseconds = 5000;
- setInterval(() => {
-
- web.robotNodeStatus()
- }, intervalInMilliseconds);
- }
- function reportDel() {
- const intervalInMilliseconds = 2000;
- setInterval(() => {
-
- robot.appMap.forEach((value, key) => {
- if (value.id !== -1) {
-
- robot.delRobot(value)
- }
- });
- }, intervalInMilliseconds);
- }
- function reportSearchPositions() {
- const intervalInMilliseconds = 1000 * 60;
- setInterval(() => {
-
- robot.appMap.forEach((value, key) => {
- logger.info('发起清仓检查:' + value.id + "停机时间:" + value.closeTime + "当前时间:" + new Date().getTime());
- let isStartTime = value.closeTime + (1000 * 60)
- if (value.id !== -1
- && isStartTime <= new Date().getTime()
- && (value.threadStatus === robot.RobotStatus.STOPPED || value.threadStatus === robot.RobotStatus.ERROR)
-
- ) {
- logger.info('--发起清仓' + value.id);
- robot.searchPositions({
- "id": value.id,
- "callPort": value.port,
- "path": value.path,
- "programName": value.programName,
- "strategyName": value.strategyName,
- })
-
- }
- });
- }, intervalInMilliseconds);
- }
- function reportAmount() {
-
- const intervalInMilliseconds = 1000;
- setInterval(() => {
-
- robot.appMap.forEach((value, key) => {
- var thisTime = new Date().getTime()
- if (value.threadStatus === robot.RobotStatus.RUNNING &&
- (thisTime - value.threadStartTime) > (1000 * 10)
- ) {
- robot.robotAmount(value)
- }
- });
- }, intervalInMilliseconds);
- }
- function cacheLogs() {
-
- const intervalInMilliseconds = 1000 * 2;
- setInterval(() => {
-
- robot.appMap.forEach((value, key) => {
- new Promise((resolve, reject) => {
- var thisTime = new Date().getTime()
- let port = value.port
- let n = 200
- let messlist = value.messlist
- if (value.id !== -1 && port !== -1) {
- logger.info(`~~~缓存日志${value.id}`)
- try {
- var logPath = "./logs" + port
- logger.info(`访问-日志相对目录:${logPath}`)
- const directoryPath = path.resolve(logPath);
- file.checkPathSync(directoryPath)
- file.getLastFile(logPath, 5, async (fileNameList, _) => {
- logger.info('-----文件:', fileNameList);
- let result = await file.getLatestLogEntries(logPath, fileNameList.reverse(), n);
- if (messlist.length === 0) {
- value.messlist = result
- } else {
- if (messlist[0] !== result[0]) {
- value.messlist = result
- }
- }
- });
- } catch (e) {
- logger.info('异步缓存日志异常~~', e);
- }
- }
- resolve()
- }).then(r => {
- logger.info('异步缓存日志异常~~失败');
- });
- });
- }, intervalInMilliseconds);
- }
- function cachePredictorState() {
-
- const intervalInMilliseconds = 1500;
- setInterval(() => {
-
- var config = getRustConfig()
- robot.appMap.forEach((value, key) => {
- var thisTime = new Date().getTime()
- let port = value.port
- let predictorState = value.predictorState
- if (value.id !== -1 && port !== -1 && value.threadStatus === robot.RobotStatus.RUNNING) {
- logger.info(`~~~缓存机器人状态详情${value.id}`)
- var accUrl = "http://127.0.0.1:" + port
- http.request_get(`${accUrl}/predictor_state`, {...config.headers})
- .then((data) => {
- let result = JSON.parse(data);
- if (predictorState.length === 0) {
- value.predictorState = result
- } else {
- if (predictorState[0] !== predictorState[0]) {
- value.predictorState = result
- }
- }
- }).catch((error) => {
- logger.info(`异步缓存predictorState异常~~ ${error.message}`)
- });
- }
- });
- }, intervalInMilliseconds);
- }
- module.exports = {
- init
- };
|