fix(core): 修复调度队列为空时定时执行被反复调起

This commit is contained in:
DLmaster
2025-01-28 16:13:12 +08:00
parent ffa3767198
commit 29536003a4
5 changed files with 31 additions and 24 deletions

View File

@@ -29,6 +29,7 @@ from loguru import logger
from PySide6.QtCore import QThread, QObject, Signal from PySide6.QtCore import QThread, QObject, Signal
from qfluentwidgets import Dialog from qfluentwidgets import Dialog
from pathlib import Path from pathlib import Path
from datetime import datetime
from typing import Dict, Union from typing import Dict, Union
from .config import Config from .config import Config
@@ -261,6 +262,14 @@ class TaskManager(QObject):
f"任务名称:{log[0]}{log[1]["History"].replace("\n","\n ")}\n" f"任务名称:{log[0]}{log[1]["History"].replace("\n","\n ")}\n"
) )
Config.save_history(name, {"Time": time, "History": history}) Config.save_history(name, {"Time": time, "History": history})
else:
Config.save_history(
name,
{
"Time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
"History": "没有任务被执行",
},
)
self.task_list.pop(name) self.task_list.pop(name)
Config.running_list.remove(name) Config.running_list.remove(name)

View File

@@ -29,7 +29,7 @@ from loguru import logger
from PySide6.QtWidgets import QWidget from PySide6.QtWidgets import QWidget
from PySide6.QtCore import QTimer from PySide6.QtCore import QTimer
import json import json
import datetime from datetime import datetime
import pyautogui import pyautogui
from .config import Config from .config import Config
@@ -73,7 +73,7 @@ class MainTimer(QWidget):
if info["Time"][f"TimeEnabled_{_}"] if info["Time"][f"TimeEnabled_{_}"]
] ]
# 按时间调起代理任务 # 按时间调起代理任务
curtime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M") curtime = datetime.now().strftime("%Y-%m-%d %H:%M")
if ( if (
curtime[11:16] in time_set curtime[11:16] in time_set
and curtime != history["Time"][:16] and curtime != history["Time"][:16]

View File

@@ -29,7 +29,7 @@ from loguru import logger
from PySide6.QtCore import QObject, Signal, QEventLoop from PySide6.QtCore import QObject, Signal, QEventLoop
import json import json
import sqlite3 import sqlite3
import datetime from datetime import datetime, timedelta
import subprocess import subprocess
import shutil import shutil
import time import time
@@ -94,7 +94,7 @@ class MaaManager(QObject):
"""主进程运行MAA代理进程""" """主进程运行MAA代理进程"""
curdate = self.server_date() curdate = self.server_date()
begin_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") begin_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
self.configure() self.configure()
# 检查MAA路径是否可用 # 检查MAA路径是否可用
@@ -169,7 +169,7 @@ class MaaManager(QObject):
# 配置MAA # 配置MAA
self.set_maa(mode_book[j], user[2]) self.set_maa(mode_book[j], user[2])
# 记录当前时间 # 记录当前时间
start_time = datetime.datetime.now() start_time = datetime.now()
# 创建MAA任务 # 创建MAA任务
maa = subprocess.Popen( maa = subprocess.Popen(
[self.maa_exe_path], [self.maa_exe_path],
@@ -199,20 +199,20 @@ class MaaManager(QObject):
# 判断是否超时 # 判断是否超时
if len(logs) > 0: if len(logs) > 0:
latest_time = datetime.datetime.now() latest_time = datetime.now()
for _ in range(-1, 0 - len(logs) - 1, -1): for _ in range(-1, 0 - len(logs) - 1, -1):
try: try:
latest_time = datetime.datetime.strptime( latest_time = datetime.strptime(
logs[_][1:20], "%Y-%m-%d %H:%M:%S" logs[_][1:20], "%Y-%m-%d %H:%M:%S"
) )
break break
except ValueError: except ValueError:
pass pass
now_time = datetime.datetime.now() now_time = datetime.now()
if ( if (
j == 0 j == 0
and now_time - latest_time and now_time - latest_time
> datetime.timedelta( > timedelta(
minutes=self.set["RunSet"][ minutes=self.set["RunSet"][
"AnnihilationTimeLimit" "AnnihilationTimeLimit"
] ]
@@ -220,7 +220,7 @@ class MaaManager(QObject):
) or ( ) or (
j == 1 j == 1
and now_time - latest_time and now_time - latest_time
> datetime.timedelta( > timedelta(
minutes=self.set["RunSet"]["RoutineTimeLimit"] minutes=self.set["RunSet"]["RoutineTimeLimit"]
) )
): ):
@@ -338,7 +338,7 @@ class MaaManager(QObject):
self.set_maa("人工排查_仅切换账号", user[2]) self.set_maa("人工排查_仅切换账号", user[2])
# 记录当前时间 # 记录当前时间
start_time = datetime.datetime.now() start_time = datetime.now()
# 创建MAA任务 # 创建MAA任务
maa = subprocess.Popen( maa = subprocess.Popen(
[self.maa_exe_path], [self.maa_exe_path],
@@ -432,7 +432,7 @@ class MaaManager(QObject):
creationflags=subprocess.CREATE_NO_WINDOW, creationflags=subprocess.CREATE_NO_WINDOW,
) )
# 记录当前时间 # 记录当前时间
start_time = datetime.datetime.now() start_time = datetime.now()
# 监测MAA运行状态 # 监测MAA运行状态
while not self.isInterruptionRequested: while not self.isInterruptionRequested:
@@ -487,7 +487,7 @@ class MaaManager(QObject):
wait_index = [_[2] for _ in user_list if _[1] == "等待"] wait_index = [_[2] for _ in user_list if _[1] == "等待"]
# 保存运行日志 # 保存运行日志
end_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") end_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
end_log = ( end_log = (
f"任务开始时间:{begin_time},结束时间:{end_time}\n" f"任务开始时间:{begin_time},结束时间:{end_time}\n"
f"已完成数:{len(over_index)},未完成数:{len(error_index) + len(wait_index)}\n\n" f"已完成数:{len(over_index)},未完成数:{len(error_index) + len(wait_index)}\n\n"
@@ -550,9 +550,7 @@ class MaaManager(QObject):
for entry in f: for entry in f:
if not if_log_start: if not if_log_start:
try: try:
entry_time = datetime.datetime.strptime( entry_time = datetime.strptime(entry[1:20], "%Y-%m-%d %H:%M:%S")
entry[1:20], "%Y-%m-%d %H:%M:%S"
)
if entry_time > start_time: if entry_time > start_time:
if_log_start = True if_log_start = True
logs.append(entry) logs.append(entry)
@@ -1015,7 +1013,7 @@ class MaaManager(QObject):
def server_date(self): def server_date(self):
"""获取当前的服务器日期""" """获取当前的服务器日期"""
dt = datetime.datetime.now() dt = datetime.now()
if dt.time() < datetime.datetime.min.time().replace(hour=4): if dt.time() < datetime.min.time().replace(hour=4):
dt = dt - datetime.timedelta(days=1) dt = dt - timedelta(days=1)
return dt.strftime("%Y-%m-%d") return dt.strftime("%Y-%m-%d")

View File

@@ -52,7 +52,7 @@ from PySide6.QtCore import Qt
from functools import partial from functools import partial
from pathlib import Path from pathlib import Path
from typing import List from typing import List
import datetime from datetime import datetime, timedelta
import json import json
import shutil import shutil
@@ -1623,7 +1623,7 @@ class MaaSettingBox(QWidget):
def server_date() -> str: def server_date() -> str:
"""获取当前的服务器日期""" """获取当前的服务器日期"""
dt = datetime.datetime.now() dt = datetime.now()
if dt.time() < datetime.datetime.min.time().replace(hour=4): if dt.time() < datetime.min.time().replace(hour=4):
dt = dt - datetime.timedelta(days=1) dt = dt - timedelta(days=1)
return dt.strftime("%Y-%m-%d") return dt.strftime("%Y-%m-%d")

View File

@@ -1,7 +1,7 @@
{ {
"main_version": "4.2.1.1", "main_version": "4.2.1.1",
"updater_version": "1.1.0.1", "updater_version": "1.1.0.1",
"announcement": "\n## 新增功能\n- 调度队列上线支持MAA多开\n- 公告系统上线\n## 修复BUG\n- 修复手机号码不全时引发的混乱\n- 添加了一堆BUG确信\n## 程序优化\n- 界面重构,引入`QFluentWidgets`美化界面", "announcement": "\n## 新增功能\n- 调度队列上线支持MAA多开 #12\n- 公告系统上线\n## 修复BUG\n- 修复手机号码不全时引发的混乱\n- 添加了一堆BUG确信\n## 程序优化\n- 界面重构,引入`QFluentWidgets`美化界面",
"proxy_list": [ "proxy_list": [
"", "",
"https://gitproxy.click/", "https://gitproxy.click/",