Files
yakpanel-core/script/project_daemon.py

83 lines
3.0 KiB
Python
Raw Normal View History

2026-04-07 02:04:22 +05:30
import json
import os
import sys
panel_path = '/www/server/panel'
os.chdir(panel_path)
if "/www/server/panel/class" not in sys.path:
sys.path.insert(0, "/www/server/panel/class")
if "/www/server/panel" not in sys.path:
sys.path.insert(0, "/www/server/panel")
import public
def PythonDaemons():
"""
@name Python 项目守护进程
@author baozi@yakpanel.com
@time 2023-10-21
"""
if public.M('sites').where('project_type=?', ('Python',)).count() >= 1:
project_info = public.M('sites').where('project_type=?', ('Python',)).select()
for i in project_info:
try:
from projectModelV2 import pythonModel
# sites 表中的 project_config
i['project_config'] = json.loads(i['project_config'])
# auto_run, 自启,守护
if 'auto_run' in i['project_config'] and i['project_config']['auto_run'] in ["1", 1, True, "true"]:
python_obj = pythonModel.main()
# 项目的运行状态是否为运行中
if python_obj.get_project_run_state(project_name=i['name']):
continue
# 项目是否被用户停止了, 则不再自动启动
if python_obj.is_stop_by_user(i["id"]):
continue
get = public.dict_obj()
get.name = i['name']
# StartProject
python_obj.StartProject(get)
public.WriteLog('Project Daemon', 'Python project [{}] auto start!'.format(i['name']))
except Exception:
import traceback
print("Python Daemon Error: {}".format(traceback.format_exc()))
continue
def NodeDaemons():
if public.M('sites').where('project_type=?', ('Node',)).count() >= 1:
project_info = public.M('sites').where('project_type=?', ('Node',)).select()
from projectModelV2 import nodejsModel
for i in project_info:
try:
i['project_config'] = json.loads(i['project_config'])
if 'is_power_on' in i['project_config'] and i['project_config']['is_power_on'] in ["1", 1, True, "true"]: # node 默认为is_power_on
node_obj = nodejsModel.main()
get = public.dict_obj()
get.project_name = i['name']
if node_obj._get_project_run_state(get):
continue
# StartProject
node_obj.start_project(get)
public.WriteLog('Project Daemon', 'Node.js project [{}] auto start!'.format(i['name']))
except Exception:
import traceback
print("Node.js Daemon Error: {}".format(traceback.format_exc()))
continue
def GoDaemons():
pass
def main():
# go, java, python, nodejs...
GoDaemons()
NodeDaemons()
PythonDaemons()
if __name__ == '__main__':
main()