Initial YakPanel commit
This commit is contained in:
82
script/project_daemon.py
Normal file
82
script/project_daemon.py
Normal file
@@ -0,0 +1,82 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user