Browse Source

코드 수정

잉여개발기 1 year ago
parent
commit
c353e3a982
3 changed files with 44 additions and 27 deletions
  1. 5 1
      app.py
  2. 26 22
      route/main_sys_restart.py
  3. 13 4
      route/main_sys_update.py

+ 5 - 1
app.py

@@ -941,13 +941,17 @@ app.route('/<regex("[^.]+\\.(?:txt|xml|ico)"):data>')(main_view_file)
 
 
 app.route('/shutdown', methods = ['POST', 'GET'])(main_sys_shutdown)
 app.route('/shutdown', methods = ['POST', 'GET'])(main_sys_shutdown)
 app.route('/restart', methods = ['POST', 'GET'])(main_sys_restart)
 app.route('/restart', methods = ['POST', 'GET'])(main_sys_restart)
-app.route('/update', methods = ['POST', 'GET'])(main_sys_update)
+app.route('/update', defaults = { 'golang_process' : golang_process }, methods = ['POST', 'GET'])(main_sys_update)
 
 
 app.errorhandler(404)(main_func_error_404)
 app.errorhandler(404)(main_func_error_404)
 
 
 def terminate_golang():
 def terminate_golang():
     if golang_process.poll() is None:
     if golang_process.poll() is None:
         golang_process.terminate()
         golang_process.terminate()
+        try:
+            golang_process.wait(timeout = 5)
+        except subprocess.TimeoutExpired:
+            golang_process.kill()
 
 
 def signal_handler(signal, frame):
 def signal_handler(signal, frame):
     terminate_golang()
     terminate_golang()

+ 26 - 22
route/main_sys_restart.py

@@ -1,5 +1,30 @@
 from .tool.func import *
 from .tool.func import *
 
 
+async def main_sys_restart_do():
+    print('Restart')
+
+    python_ver = ''
+    python_ver = str(sys.version_info.major) + '.' + str(sys.version_info.minor)
+
+    run_list = [sys.executable, 'python' + python_ver, 'python3', 'python', 'py -' + python_ver]
+    for exe_name in run_list:
+        try:
+            os.execl(exe_name, sys.executable, *sys.argv)
+        except:
+            pass
+
+        try:
+            os.execl(exe_name, '"' + sys.executable + '"', *sys.argv)
+        except:
+            pass
+
+        try:
+            os.execl(exe_name, os.path.abspath(__file__), *sys.argv)
+        except:
+            pass
+    else:
+        return 0
+
 async def main_sys_restart():
 async def main_sys_restart():
     with get_db_connect() as conn:
     with get_db_connect() as conn:
         if await acl_check('', 'owner_auth', '', '') == 1:
         if await acl_check('', 'owner_auth', '', '') == 1:
@@ -8,28 +33,7 @@ async def main_sys_restart():
         if flask.request.method == 'POST':
         if flask.request.method == 'POST':
             await acl_check(tool = 'owner_auth', memo = 'restart')
             await acl_check(tool = 'owner_auth', memo = 'restart')
 
 
-            print('Restart')
-
-            python_ver = ''
-            python_ver = str(sys.version_info.major) + '.' + str(sys.version_info.minor)
-
-            run_list = [sys.executable, 'python' + python_ver, 'python3', 'python', 'py -' + python_ver]
-            for exe_name in run_list:
-                try:
-                    os.execl(exe_name, sys.executable, *sys.argv)
-                except:
-                    pass
-
-                try:
-                    os.execl(exe_name, '"' + sys.executable + '"', *sys.argv)
-                except:
-                    pass
-
-                try:
-                    os.execl(exe_name, os.path.abspath(__file__), *sys.argv)
-                except:
-                    pass
-            else:
+            if await main_sys_restart_do() == 0:
                 return await re_error(conn, 33)
                 return await re_error(conn, 33)
         else:
         else:
             return easy_minify(conn, flask.render_template(skin_check(conn),
             return easy_minify(conn, flask.render_template(skin_check(conn),

+ 13 - 4
route/main_sys_update.py

@@ -3,7 +3,9 @@ import urllib.request
 
 
 from .tool.func import *
 from .tool.func import *
 
 
-async def main_sys_update():
+from .main_sys_restart import main_sys_restart_do
+
+async def main_sys_update(golang_process):
     with get_db_connect() as conn:
     with get_db_connect() as conn:
         curs = conn.cursor()
         curs = conn.cursor()
 
 
@@ -18,6 +20,13 @@ async def main_sys_update():
             up_data = up_data[0][0] if up_data and up_data[0][0] in ['stable', 'beta', 'dev', 'dont_use'] else 'stable'
             up_data = up_data[0][0] if up_data and up_data[0][0] in ['stable', 'beta', 'dev', 'dont_use'] else 'stable'
 
 
             print('Update')
             print('Update')
+
+            if golang_process.poll() is None:
+                golang_process.terminate()
+                try:
+                    golang_process.wait(timeout = 5)
+                except subprocess.TimeoutExpired:
+                    golang_process.kill()
             
             
             if platform.system() == 'Linux' or platform.system() == 'Darwin':
             if platform.system() == 'Linux' or platform.system() == 'Darwin':
                 ok = []
                 ok = []
@@ -30,8 +39,8 @@ async def main_sys_update():
                         break
                         break
                 else:
                 else:
                     linux_exe_chmod()
                     linux_exe_chmod()
-                    
-                    return redirect(conn, '/restart')
+
+                    await main_sys_restart_do()
                 
                 
                 print('Error : update failed')
                 print('Error : update failed')
             elif platform.system() == 'Windows':
             elif platform.system() == 'Windows':
@@ -46,7 +55,7 @@ async def main_sys_update():
                     os.system('rd /s /q opennamu-' + up_data)
                     os.system('rd /s /q opennamu-' + up_data)
                     os.system('del update.zip')
                     os.system('del update.zip')
 
 
-                    return redirect(conn, '/restart')
+                    await main_sys_restart_do()
             
             
             print('Error : update failed')
             print('Error : update failed')