mdserver-web/plugins/webstats/tool_task.py

133 lines
3.2 KiB
Python
Raw Permalink Normal View History

2022-07-25 23:48:29 -04:00
# coding:utf-8
import sys
import io
import os
import time
import json
2024-11-23 15:38:28 -05:00
2024-11-23 15:43:00 -05:00
web_dir = os.getcwd() + "/web"
if os.path.exists(web_dir):
sys.path.append(web_dir)
os.chdir(web_dir)
import core.mw as mw
from utils.crontab import crontab as MwCrontab
2022-07-25 23:48:29 -04:00
app_debug = False
if mw.isAppleSystem():
app_debug = True
def getPluginName():
return 'webstats'
def getPluginDir():
return mw.getPluginDir() + '/' + getPluginName()
def getServerDir():
return mw.getServerDir() + '/' + getPluginName()
def getTaskConf():
conf = getServerDir() + "/task_config.json"
return conf
def getConfigData():
2024-11-23 16:26:35 -05:00
conf = getTaskConf()
if os.path.exists(conf):
2022-07-25 23:48:29 -04:00
return json.loads(mw.readFile(getTaskConf()))
return {
"task_id": -1,
"task_list": ["migrate_hot_logs"],
"default_execute_hour": 3,
2022-07-26 00:12:57 -04:00
"default_execute_minute": 15,
2022-07-25 23:48:29 -04:00
}
def createBgTask():
cfg = getConfigData()
name = "[勿删]网站统计插件定时任务"
res = mw.M("crontab").field("id, name").where("name=?", (name,)).find()
if res:
return True
if "task_id" in cfg.keys() and cfg["task_id"] > 0:
2024-11-23 15:51:29 -05:00
res = mw.M("crontab").field("id, name").where("id=?", (cfg["task_id"],)).find()
2022-07-25 23:48:29 -04:00
if res and res["id"] == cfg["task_id"]:
print("计划任务已经存在!")
return True
2024-11-23 15:38:28 -05:00
cmd = "cd " + mw.getPanelDir() + " && nice -n 10 python3 " + getPluginDir() + "/tool_task.py execute"
2022-07-25 23:48:29 -04:00
params = {
'name': name,
'type': 'day',
'week': "",
'where1': "",
'hour': cfg['default_execute_hour'],
2022-07-26 00:12:57 -04:00
'minute': cfg['default_execute_minute'],
2022-07-25 23:48:29 -04:00
'save': "",
'backup_to': "",
'stype': "toShell",
'sname': '',
'sbody': cmd,
2024-11-23 15:44:31 -05:00
'url_address': '',
2022-07-25 23:48:29 -04:00
}
2024-11-23 15:38:28 -05:00
task_id = MwCrontab.instance().add(params)
2022-07-25 23:48:29 -04:00
if task_id > 0:
cfg["task_id"] = task_id
mw.writeFile(getTaskConf(), json.dumps(cfg))
def removeBgTask():
cfg = getConfigData()
if "task_id" in cfg.keys() and cfg["task_id"] > 0:
res = mw.M("crontab").field("id, name").where(
"id=?", (cfg["task_id"],)).find()
if res and res["id"] == cfg["task_id"]:
2024-11-23 15:38:28 -05:00
data = MwCrontab.instance().delete(cfg["task_id"])
2024-12-11 05:56:37 -05:00
if data['status']:
2023-01-06 07:52:07 -05:00
# print(data[1])
2022-07-25 23:48:29 -04:00
cfg["task_id"] = -1
mw.writeFile(getTaskConf(), json.dumps(cfg))
return True
return False
def execute():
2022-07-26 00:12:57 -04:00
try:
import time
now = time.strftime("%Y-%m-%d", time.localtime())
print("-" * 30)
cfg = getConfigData()
task_list = cfg["task_list"]
for task in task_list:
2022-07-26 00:59:35 -04:00
# print(task)
2022-07-26 00:12:57 -04:00
if task == "migrate_hot_logs":
try:
2022-07-26 00:59:35 -04:00
import tool_migrate
tool_migrate.migrateHotLogs("yesterday")
except Exception as e:
print(e)
2022-07-26 00:12:57 -04:00
print(now)
print("-" * 30)
except Exception as e:
print(e)
2022-07-25 23:48:29 -04:00
if __name__ == "__main__":
if len(sys.argv) > 1:
action = sys.argv[1]
if action == "execute":
execute()
elif action == "remove":
removeBgTask()
elif action == "add":
createBgTask()