瀏覽代碼

[server][add][local_file]

zhangwei 3 年之前
父節點
當前提交
392e4c6b67
共有 5 個文件被更改,包括 766 次插入11 次删除
  1. 1 0
      server/1.json
  2. 二進制
      server/__pycache__/main.cpython-39.pyc
  3. 26 11
      server/main.py
  4. 716 0
      server/nohup.out
  5. 23 0
      server/runoob.log

+ 1 - 0
server/1.json

@@ -0,0 +1 @@
+{"status": "0"}

二進制
server/__pycache__/main.cpython-39.pyc


+ 26 - 11
server/main.py

@@ -9,10 +9,25 @@ app = Flask(__name__,static_folder="static")
 CORS(app, resources=r'/*')
 
 
+# 操作文件,读取本地
+def set_local_file_json(val):
+    send_status_value = {"status":val}
+    with open("1.json","w",encoding="utf-8") as f:
+        f.write(json.dumps(send_status_value))
+        f.close()
+
+def get_local_file_json():
+    try:
+        with open("1.json","r",encoding="utf-8") as f:
+            return json.loads(f.read())
+    except:
+        set_local_file_json("0")
+        return {"status":0}
+
 # current_path
 current_path = os.getcwd()
 res_json = {"code":0,"msg":"成功"}
-send_status = False
+
 
 # 1.小程序打包
 def build_mini_program(branch):
@@ -177,13 +192,13 @@ def getGroup():
 
 @app.route('/send',methods=['POST'])
 def send():
-    global send_status
+    local_data = get_local_file_json()
     try:
-        if send_status == True:
+        if local_data["status"] == "1":
             res_json["code"] = 9
             res_json["msg"] = "当前有人打包,请稍后尝试"
             return res_json
-        send_status = True
+        set_local_file_json("1")
         res_json["code"] = 0
         res_json["msg"] = "成功"
         chat_id = request.json["chat_id"]
@@ -197,12 +212,12 @@ def send():
         # 1.小程序打包
         build_mini_program(branch)
         if res_json["code"] != 0:
-            send_status = False
+            set_local_file_json("0")
             return res_json
         # 2.修改环境
         edit_mode_by_file(project,mode)
         if res_json["code"] != 0:
-            send_status = False
+            set_local_file_json("0")
             return res_json
         # 3.微信编译图片
         time.sleep(1)
@@ -212,23 +227,23 @@ def send():
         # -------- 飞书 --------
         # 1.获取签名
         if res_json["code"] != 0:
-            send_status = False
+            set_local_file_json("0")
             return res_json
         token = tenant_access_token_by_feishu()
         # # 2.获取imgKey
         if res_json["code"] != 0:
-            send_status = False
+            set_local_file_json("0")
             return res_json
         img_key = upload_img_by_feishu(token)
         # # 3.飞书发送消息
         if res_json["code"] != 0:
-            send_status = False
+            set_local_file_json("0")
             return res_json
         send_msg_by_feishu(token,img_key,chat_id,project_name,mode_name)
 
-        send_status = False
+        set_local_file_json("0")
     except Exception as ex:
-        send_status = False
+        set_local_file_json("0")
         res_json["code"] = 9
         print(ex)
         res_json["msg"] = ex.args

+ 716 - 0
server/nohup.out

@@ -617,3 +617,719 @@ Already up to date.
  5: 0x100001034 start [/usr/local/bin/node]
 /bin/sh: line 1: 43551 Abort trap: 6           npm run build
 192.168.80.185 - - [21/Oct/2021 16:48:16] "POST /send HTTP/1.1" 200 -
+ * Serving Flask app 'main' (lazy loading)
+ * Environment: production
+   WARNING: This is a development server. Do not use it in a production deployment.
+   Use a production WSGI server instead.
+ * Debug mode: on
+ * Running on all addresses.
+   WARNING: This is a development server. Do not use it in a production deployment.
+ * Running on http://192.168.80.185:7777/ (Press CTRL+C to quit)
+ * Restarting with stat
+ * Debugger is active!
+ * Debugger PIN: 141-089-509
+nohup: main.py: No such file or directory
+ * Serving Flask app 'main' (lazy loading)
+ * Environment: production
+   WARNING: This is a development server. Do not use it in a production deployment.
+   Use a production WSGI server instead.
+ * Debug mode: on
+ * Running on all addresses.
+   WARNING: This is a development server. Do not use it in a production deployment.
+ * Running on http://192.168.80.185:7777/ (Press CTRL+C to quit)
+ * Restarting with stat
+ * Debugger is active!
+ * Debugger PIN: 141-089-509
+Traceback (most recent call last):
+  File "/Users/ice/Documents/work/projects_01/auto-mini-program-tool/server/main.py", line 267, in <module>
+    app.run(host='0.0.0.0', port=7777, debug=True)
+  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 920, in run
+    run_simple(t.cast(str, host), port, self, **options)
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/serving.py", line 1002, in run_simple
+    _rwr(
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/_reloader.py", line 418, in run_with_reloader
+    ensure_echo_on()
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/_reloader.py", line 398, in ensure_echo_on
+    termios.tcsetattr(sys.stdin, termios.TCSANOW, attributes)
+termios.error: (4, 'Interrupted system call')
+ * Serving Flask app 'main' (lazy loading)
+ * Environment: production
+   WARNING: This is a development server. Do not use it in a production deployment.
+   Use a production WSGI server instead.
+ * Debug mode: on
+ * Running on all addresses.
+   WARNING: This is a development server. Do not use it in a production deployment.
+ * Running on http://192.168.80.185:7777/ (Press CTRL+C to quit)
+ * Restarting with stat
+ * Debugger is active!
+ * Debugger PIN: 141-089-509
+192.168.80.185 - - [21/Oct/2021 19:04:25] "GET /static/dist/index.html HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:04:25] "GET /static/dist/assets/vendor.adaadc93.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:04:25] "GET /static/dist/assets/index.5b87c40b.css HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:04:25] "GET /static/dist/assets/index.df0c4e9a.js HTTP/1.1" 304 -
+fatal: destination path 'longVideoFactory' already exists and is not an empty directory.
+192.168.80.185 - - [21/Oct/2021 19:04:25] "GET /static/dist/assets/element-icons.9c88a535.woff HTTP/1.1" 304 -
+hint: Pulling without specifying how to reconcile divergent branches is
+hint: discouraged. You can squelch this message by running one of the following
+hint: commands sometime before your next pull:
+hint: 
+hint:   git config pull.rebase false  # merge (the default strategy)
+hint:   git config pull.rebase true   # rebase
+hint:   git config pull.ff only       # fast-forward only
+hint: 
+hint: You can replace "git config" with "git config --global" to set a default
+hint: preference for all repositories. You can also pass --rebase, --no-rebase,
+hint: or --ff-only on the command line to override the configured default per
+hint: invocation.
+192.168.80.185 - - [21/Oct/2021 19:04:25] "GET /static/dist/favicon.ico HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:04:26] "GET /getGroup HTTP/1.1" 200 -
+Already up to date.
+192.168.80.185 - - [21/Oct/2021 19:04:26] "GET /getBranch HTTP/1.1" 200 -
+Already on 'master'
+M	package-lock.json
+Your branch is up to date with 'origin/master'.
+hint: Pulling without specifying how to reconcile divergent branches is
+hint: discouraged. You can squelch this message by running one of the following
+hint: commands sometime before your next pull:
+hint: 
+hint:   git config pull.rebase false  # merge (the default strategy)
+hint:   git config pull.rebase true   # rebase
+hint:   git config pull.ff only       # fast-forward only
+hint: 
+hint: You can replace "git config" with "git config --global" to set a default
+hint: preference for all repositories. You can also pass --rebase, --no-rebase,
+hint: or --ff-only on the command line to override the configured default per
+hint: invocation.
+Already up to date.
+- 
+✔ Installed 9 packages
+✔ Linked 0 latest versions
+✔ Run 0 scripts
+✔ All packages installed (used 20ms(network 18ms), speed 0B/s, json 0(0B), tarball 0B)
+npm WARN The package gulp-copy is included as both a dev and production dependency.
+npm WARN The package gulp-minify-css is included as both a dev and production dependency.
+npm WARN The package gulp-replace is included as both a dev and production dependency.
+npm WARN The package gulp-rm is included as both a dev and production dependency.
+npm WARN The package gulp-sequence is included as both a dev and production dependency.
+
+audited 599 packages in 3.159s
+
+9 packages are looking for funding
+  run `npm fund` for details
+
+found 92 vulnerabilities (3 low, 9 moderate, 59 high, 21 critical)
+  run `npm audit fix` to fix them, or `npm audit` for details
+
+> longvideofactory@1.0.0 build /Users/ice/Documents/work/projects_01/auto-mini-program-tool/server/longVideoFactory
+> gulp build
+
+[19:04:43] Using gulpfile ~/Documents/work/projects_01/auto-mini-program-tool/server/longVideoFactory/gulpfile.js
+[19:04:43] Starting 'build'...
+[19:04:43] Starting 'build:longVideo'...
+[19:04:43] Starting 'longVideo:copy'...
+[19:04:45] Finished 'longVideo:copy' after 1.96 s
+[19:04:45] Starting 'longVideo:less'...
+[19:04:47] Finished 'longVideo:less' after 2.54 s
+[19:04:47] Starting 'longVideo:wxml'...
+[19:04:48] Finished 'longVideo:wxml' after 443 ms
+[19:04:48] Starting 'longVideo:js'...
+[19:04:48] Finished 'longVideo:js' after 799 ms
+[19:04:48] Starting 'longVideo:rm'...
+[19:04:49] Finished 'longVideo:rm' after 289 ms
+[19:04:49] Finished 'build:longVideo' after 6.04 s
+[19:04:49] Starting 'build:vlog'...
+[19:04:49] Starting 'vlog:copy'...
+[19:04:50] Finished 'vlog:copy' after 1.58 s
+[19:04:50] Starting 'vlog:copyicon'...
+[19:04:50] Finished 'vlog:copyicon' after 8.7 ms
+[19:04:50] Starting 'vlog:copyutils'...
+[19:04:50] Finished 'vlog:copyutils' after 1.57 ms
+[19:04:50] Starting 'vlog:copynetwork'...
+[19:04:50] Finished 'vlog:copynetwork' after 2.17 ms
+[19:04:50] Starting 'vlog:less'...
+[19:04:52] Finished 'vlog:less' after 1.59 s
+[19:04:52] Starting 'vlog:wxml'...
+[19:04:52] Finished 'vlog:wxml' after 302 ms
+[19:04:52] Starting 'vlog:js'...
+[19:04:53] Finished 'vlog:js' after 597 ms
+[19:04:53] Starting 'vlog:copysrc'...
+[19:04:53] Finished 'vlog:copysrc' after 3.95 ms
+[19:04:53] Starting 'vlog:rm'...
+[19:04:53] Finished 'vlog:rm' after 236 ms
+[19:04:53] Finished 'build:vlog' after 4.33 s
+[19:04:53] Starting 'build:video'...
+[19:04:53] Starting 'video:copy'...
+[19:04:54] Finished 'video:copy' after 1.44 s
+[19:04:54] Starting 'video:copyicon'...
+[19:04:54] Finished 'video:copyicon' after 979 μs
+[19:04:54] Starting 'video:copyutils'...
+[19:04:54] Finished 'video:copyutils' after 1.42 ms
+[19:04:54] Starting 'video:copynetwork'...
+[19:04:55] Finished 'video:copynetwork' after 1.39 ms
+[19:04:55] Starting 'video:less'...
+[19:04:56] Finished 'video:less' after 1.51 s
+[19:04:56] Starting 'video:wxml'...
+[19:04:56] Finished 'video:wxml' after 318 ms
+[19:04:56] Starting 'video:js'...
+[19:04:57] Finished 'video:js' after 568 ms
+[19:04:57] Starting 'video:copysrc'...
+[19:04:57] Finished 'video:copysrc' after 4.41 ms
+[19:04:57] Starting 'video:rm'...
+[19:04:57] Finished 'video:rm' after 221 ms
+[19:04:57] Finished 'build:video' after 4.07 s
+[19:04:57] Finished 'build' after 14 s
+
+> longvideofactory@1.0.0 postbuild /Users/ice/Documents/work/projects_01/auto-mini-program-tool/server/longVideoFactory
+> gulp build:post
+
+[19:04:58] Using gulpfile ~/Documents/work/projects_01/auto-mini-program-tool/server/longVideoFactory/gulpfile.js
+[19:04:58] Starting 'build:post'...
+[19:04:58] Starting 'build:iFunny'...
+[19:04:58] Starting 'iFunny:copy'...
+[19:05:00] Finished 'iFunny:copy' after 1.69 s
+[19:05:00] Starting 'iFunny:copynetwork'...
+[19:05:00] Finished 'iFunny:copynetwork' after 9.32 ms
+[19:05:00] Starting 'iFunny:less'...
+[19:05:02] Finished 'iFunny:less' after 2.1 s
+[19:05:02] Starting 'iFunny:wxml'...
+[19:05:02] Finished 'iFunny:wxml' after 388 ms
+[19:05:02] Starting 'iFunny:js'...
+[19:05:03] Finished 'iFunny:js' after 632 ms
+[19:05:03] Starting 'iFunny:copysrc'...
+[19:05:03] Finished 'iFunny:copysrc' after 4.42 ms
+[19:05:03] Starting 'iFunny:rm'...
+[19:05:03] Finished 'iFunny:rm' after 261 ms
+[19:05:03] Finished 'build:iFunny' after 5.09 s
+[19:05:03] Starting 'build:iMove'...
+[19:05:03] Starting 'iMove:copy'...
+[19:05:04] Finished 'iMove:copy' after 1.41 s
+[19:05:04] Starting 'iMove:copynetwork'...
+[19:05:04] Finished 'iMove:copynetwork' after 2.76 ms
+[19:05:04] Starting 'iMove:less'...
+[19:05:06] Finished 'iMove:less' after 1.56 s
+[19:05:06] Starting 'iMove:wxml'...
+[19:05:06] Finished 'iMove:wxml' after 293 ms
+[19:05:06] Starting 'iMove:js'...
+[19:05:07] Finished 'iMove:js' after 619 ms
+[19:05:07] Starting 'iMove:copysrc'...
+[19:05:07] Finished 'iMove:copysrc' after 3.34 ms
+[19:05:07] Starting 'iMove:rm'...
+[19:05:07] Finished 'iMove:rm' after 256 ms
+[19:05:07] Finished 'build:iMove' after 4.14 s
+[19:05:07] Starting 'build:shortVideo'...
+[19:05:07] Starting 'shortVideo:copy'...
+[19:05:08] Finished 'shortVideo:copy' after 1.44 s
+[19:05:08] Starting 'shortVideo:copynetwork'...
+[19:05:08] Finished 'shortVideo:copynetwork' after 2.43 ms
+[19:05:08] Starting 'shortVideo:less'...
+[19:05:10] Finished 'shortVideo:less' after 1.42 s
+[19:05:10] Starting 'shortVideo:wxml'...
+[19:05:10] Finished 'shortVideo:wxml' after 272 ms
+[19:05:10] Starting 'shortVideo:js'...
+[19:05:11] Finished 'shortVideo:js' after 578 ms
+[19:05:11] Starting 'shortVideo:copysrc'...
+[19:05:11] Finished 'shortVideo:copysrc' after 3.26 ms
+[19:05:11] Starting 'shortVideo:rm'...
+[19:05:11] Finished 'shortVideo:rm' after 199 ms
+[19:05:11] Finished 'build:shortVideo' after 3.92 s
+[19:05:11] Starting 'build:amazed'...
+[19:05:11] Starting 'amazed:copy'...
+[19:05:12] Finished 'amazed:copy' after 1.37 s
+[19:05:12] Starting 'amazed:copynetwork'...
+[19:05:12] Finished 'amazed:copynetwork' after 1.62 ms
+[19:05:12] Starting 'amazed:less'...
+[19:05:14] Finished 'amazed:less' after 1.33 s
+[19:05:14] Starting 'amazed:wxml'...
+[19:05:14] Finished 'amazed:wxml' after 273 ms
+[19:05:14] Starting 'amazed:js'...
+[19:05:15] Finished 'amazed:js' after 574 ms
+[19:05:15] Starting 'amazed:copysrc'...
+[19:05:15] Finished 'amazed:copysrc' after 3.72 ms
+[19:05:15] Starting 'amazed:rm'...
+[19:05:15] Finished 'amazed:rm' after 217 ms
+[19:05:15] Finished 'build:amazed' after 3.78 s
+[19:05:15] Starting 'build:clip'...
+[19:05:15] Starting 'clip:copy'...
+[19:05:16] Finished 'clip:copy' after 1.31 s
+[19:05:16] Starting 'clip:copynetwork'...
+[19:05:16] Finished 'clip:copynetwork' after 1.96 ms
+[19:05:16] Starting 'clip:less'...
+[19:05:18] Finished 'clip:less' after 1.64 s
+[19:05:18] Starting 'clip:wxml'...
+[19:05:18] Finished 'clip:wxml' after 279 ms
+[19:05:18] Starting 'clip:js'...
+[19:05:19] Finished 'clip:js' after 527 ms
+[19:05:19] Starting 'clip:copysrc'...
+[19:05:19] Finished 'clip:copysrc' after 2.21 ms
+[19:05:19] Starting 'clip:rm'...
+[19:05:19] Finished 'clip:rm' after 198 ms
+[19:05:19] Finished 'build:clip' after 3.96 s
+[19:05:19] Starting 'build:flashSound'...
+[19:05:19] Starting 'flashSound:copy'...
+[19:05:20] Finished 'flashSound:copy' after 910 ms
+[19:05:20] Starting 'flashSound:copyPage'...
+[19:05:20] Finished 'flashSound:copyPage' after 12 ms
+[19:05:20] Starting 'flashSound:copyPage2'...
+[19:05:20] Finished 'flashSound:copyPage2' after 28 ms
+[19:05:20] Starting 'flashSound:less'...
+[19:05:21] Finished 'flashSound:less' after 1.06 s
+[19:05:21] Starting 'flashSound:rm'...
+[19:05:21] Finished 'flashSound:rm' after 134 ms
+[19:05:21] Starting 'flashSound:js'...
+[19:05:21] Finished 'flashSound:js' after 319 ms
+[19:05:21] Starting 'flashSound:wxml'...
+[19:05:21] Finished 'flashSound:wxml' after 182 ms
+[19:05:21] Starting 'flashSound:copysrc'...
+[19:05:21] Finished 'flashSound:copysrc' after 3.93 ms
+[19:05:21] Starting 'flashSound:copynetwork'...
+[19:05:21] Finished 'flashSound:copynetwork' after 2.44 ms
+[19:05:21] Finished 'build:flashSound' after 2.66 s
+[19:05:21] Starting 'build:happyStar'...
+[19:05:21] Starting 'happyStar:copy'...
+[19:05:22] Finished 'happyStar:copy' after 943 ms
+[19:05:22] Starting 'happyStar:copyPage'...
+[19:05:22] Finished 'happyStar:copyPage' after 9.37 ms
+[19:05:22] Starting 'happyStar:copyPage2'...
+[19:05:22] Finished 'happyStar:copyPage2' after 34 ms
+[19:05:22] Starting 'happyStar:less'...
+[19:05:23] Finished 'happyStar:less' after 938 ms
+[19:05:23] Starting 'happyStar:rm'...
+[19:05:23] Finished 'happyStar:rm' after 163 ms
+[19:05:23] Starting 'happyStar:js'...
+[19:05:24] Finished 'happyStar:js' after 328 ms
+[19:05:24] Starting 'happyStar:wxml'...
+[19:05:24] Finished 'happyStar:wxml' after 174 ms
+[19:05:24] Starting 'happyStar:copysrc'...
+[19:05:24] Finished 'happyStar:copysrc' after 2.71 ms
+[19:05:24] Starting 'happyStar:copynetwork'...
+[19:05:24] Finished 'happyStar:copynetwork' after 1.26 ms
+[19:05:24] Finished 'build:happyStar' after 2.6 s
+[19:05:24] Starting 'build:gaoxiao'...
+[19:05:24] Starting 'gaoxiao:copy'...
+[19:05:25] Finished 'gaoxiao:copy' after 790 ms
+[19:05:25] Starting 'gaoxiao:copyPage'...
+[19:05:25] Finished 'gaoxiao:copyPage' after 9.7 ms
+[19:05:25] Starting 'gaoxiao:copyPage2'...
+[19:05:25] Finished 'gaoxiao:copyPage2' after 33 ms
+[19:05:25] Starting 'gaoxiao:less'...
+[19:05:26] Finished 'gaoxiao:less' after 1.01 s
+[19:05:26] Starting 'gaoxiao:rm'...
+[19:05:26] Finished 'gaoxiao:rm' after 135 ms
+[19:05:26] Starting 'gaoxiao:js'...
+[19:05:26] Finished 'gaoxiao:js' after 325 ms
+[19:05:26] Starting 'gaoxiao:wxml'...
+[19:05:26] Finished 'gaoxiao:wxml' after 161 ms
+[19:05:26] Starting 'gaoxiao:copysrc'...
+[19:05:26] Finished 'gaoxiao:copysrc' after 4.65 ms
+[19:05:26] Starting 'gaoxiao:copynetwork'...
+[19:05:26] Finished 'gaoxiao:copynetwork' after 2.1 ms
+[19:05:26] Finished 'build:gaoxiao' after 2.47 s
+[19:05:26] Finished 'build:post' after 29 s
+- initialize
+
+✖ IDE may already started at port 15732, trying to connect
+
+✔ IDE server started successfully, listening on http://127.0.0.1:10631
+- preparing
+✔ open
+- initialize
+
+✔ IDE server has started, listening on http://127.0.0.1:10631
+- preparing
+✖ preparing
+[error] Error: {"code":10,"message":"Error: 错误 Error: can not find the project - /Users/ice/Documents/work/projects_01/auto-mini-program-tool/server/longVideoFactory/dist/vlog (code 10)"}
+    at Object.t.resetFileUtils (/Applications/wechatwebdevtools.app/Contents/Resources/package.nw/js/common/cli/index.js:234:28697)
+    at processTicksAndRejections (internal/process/task_queues.js:97:5)
+    at async /Applications/wechatwebdevtools.app/Contents/Resources/package.nw/js/common/cli/index.js:142:111891
+- initialize
+
+✔ IDE server has started, listening on http://127.0.0.1:10631
+- preparing
+- Fetching AppID (wx89e7eb06478361d7) permissions
+✔ Using AppID: wx89e7eb06478361d7
+- Preview
+✔ preview
+- initialize
+
+✔ IDE server has started, listening on http://127.0.0.1:10631
+- preparing
+✔ quit
+192.168.80.185 - - [21/Oct/2021 19:06:35] "POST /send HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:06:50] "GET /static/dist/index.html HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:50] "GET /static/dist/assets/vendor.adaadc93.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:50] "GET /static/dist/assets/index.df0c4e9a.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:50] "GET /static/dist/assets/index.5b87c40b.css HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:51] "GET /static/dist/assets/element-icons.9c88a535.woff HTTP/1.1" 304 -
+fatal: destination path 'longVideoFactory' already exists and is not an empty directory.
+hint: Pulling without specifying how to reconcile divergent branches is
+hint: discouraged. You can squelch this message by running one of the following
+hint: commands sometime before your next pull:
+hint: 
+hint:   git config pull.rebase false  # merge (the default strategy)
+hint:   git config pull.rebase true   # rebase
+hint:   git config pull.ff only       # fast-forward only
+hint: 
+hint: You can replace "git config" with "git config --global" to set a default
+hint: preference for all repositories. You can also pass --rebase, --no-rebase,
+hint: or --ff-only on the command line to override the configured default per
+hint: invocation.
+192.168.80.185 - - [21/Oct/2021 19:06:51] "GET /static/dist/favicon.ico HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:06:51] "GET /getGroup HTTP/1.1" 200 -
+Already up to date.
+192.168.80.185 - - [21/Oct/2021 19:06:52] "GET /static/dist/index.html HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:52] "GET /getBranch HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:06:52] "GET /static/dist/assets/vendor.adaadc93.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:52] "GET /static/dist/assets/index.5b87c40b.css HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:52] "GET /static/dist/assets/index.df0c4e9a.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:52] "GET /static/dist/assets/element-icons.9c88a535.woff HTTP/1.1" 304 -
+fatal: destination path 'longVideoFactory' already exists and is not an empty directory.
+192.168.80.185 - - [21/Oct/2021 19:06:52] "GET /static/dist/favicon.ico HTTP/1.1" 200 -
+hint: Pulling without specifying how to reconcile divergent branches is
+hint: discouraged. You can squelch this message by running one of the following
+hint: commands sometime before your next pull:
+hint: 
+hint:   git config pull.rebase false  # merge (the default strategy)
+hint:   git config pull.rebase true   # rebase
+hint:   git config pull.ff only       # fast-forward only
+hint: 
+hint: You can replace "git config" with "git config --global" to set a default
+hint: preference for all repositories. You can also pass --rebase, --no-rebase,
+hint: or --ff-only on the command line to override the configured default per
+hint: invocation.
+192.168.80.185 - - [21/Oct/2021 19:06:52] "GET /static/dist/index.html HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:52] "GET /static/dist/assets/vendor.adaadc93.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:52] "GET /static/dist/assets/index.5b87c40b.css HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:52] "GET /static/dist/assets/index.df0c4e9a.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:52] "GET /static/dist/favicon.ico HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:06:52] "GET /getGroup HTTP/1.1" 200 -
+Error on request:
+Traceback (most recent call last):
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/serving.py", line 319, in run_wsgi
+    execute(self.server.app)
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/serving.py", line 311, in execute
+    write(data)
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/serving.py", line 290, in write
+    self.wfile.write(data)
+  File "/usr/local/Cellar/python@3.9/3.9.6/Frameworks/Python.framework/Versions/3.9/lib/python3.9/socketserver.py", line 826, in write
+    self._sock.sendall(b)
+OSError: [Errno 41] Protocol wrong type for socket
+192.168.80.185 - - [21/Oct/2021 19:06:53] "GET /getGroup HTTP/1.1" 200 -
+Already up to date.
+fatal: destination path 'longVideoFactory' already exists and is not an empty directory.
+192.168.80.185 - - [21/Oct/2021 19:06:53] "GET /getBranch HTTP/1.1" 200 -
+hint: Pulling without specifying how to reconcile divergent branches is
+hint: discouraged. You can squelch this message by running one of the following
+hint: commands sometime before your next pull:
+hint: 
+hint:   git config pull.rebase false  # merge (the default strategy)
+hint:   git config pull.rebase true   # rebase
+hint:   git config pull.ff only       # fast-forward only
+hint: 
+hint: You can replace "git config" with "git config --global" to set a default
+hint: preference for all repositories. You can also pass --rebase, --no-rebase,
+hint: or --ff-only on the command line to override the configured default per
+hint: invocation.
+Already up to date.
+192.168.80.185 - - [21/Oct/2021 19:06:54] "GET /getBranch HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:06:55] "GET /static/dist/index.html HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:55] "GET /static/dist/assets/vendor.adaadc93.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:55] "GET /static/dist/assets/index.5b87c40b.css HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:55] "GET /static/dist/assets/index.df0c4e9a.js HTTP/1.1" 304 -
+fatal: destination path 'longVideoFactory' already exists and is not an empty directory.
+hint: Pulling without specifying how to reconcile divergent branches is
+hint: discouraged. You can squelch this message by running one of the following
+hint: commands sometime before your next pull:
+hint: 
+hint:   git config pull.rebase false  # merge (the default strategy)
+hint:   git config pull.rebase true   # rebase
+hint:   git config pull.ff only       # fast-forward only
+hint: 
+hint: You can replace "git config" with "git config --global" to set a default
+hint: preference for all repositories. You can also pass --rebase, --no-rebase,
+hint: or --ff-only on the command line to override the configured default per
+hint: invocation.
+192.168.80.185 - - [21/Oct/2021 19:06:56] "GET /static/dist/favicon.ico HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:06:56] "GET /getGroup HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:06:56] "GET /static/dist/index.html HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:56] "GET /static/dist/assets/vendor.adaadc93.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:56] "GET /static/dist/assets/index.df0c4e9a.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:06:56] "GET /static/dist/assets/index.5b87c40b.css HTTP/1.1" 304 -
+Already up to date.
+192.168.80.185 - - [21/Oct/2021 19:06:56] "GET /getBranch HTTP/1.1" 200 -
+fatal: destination path 'longVideoFactory' already exists and is not an empty directory.
+hint: Pulling without specifying how to reconcile divergent branches is
+hint: discouraged. You can squelch this message by running one of the following
+hint: commands sometime before your next pull:
+hint: 
+hint:   git config pull.rebase false  # merge (the default strategy)
+hint:   git config pull.rebase true   # rebase
+hint:   git config pull.ff only       # fast-forward only
+hint: 
+hint: You can replace "git config" with "git config --global" to set a default
+hint: preference for all repositories. You can also pass --rebase, --no-rebase,
+hint: or --ff-only on the command line to override the configured default per
+hint: invocation.
+192.168.80.185 - - [21/Oct/2021 19:06:57] "GET /static/dist/favicon.ico HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:06:57] "GET /getGroup HTTP/1.1" 200 -
+Already up to date.
+192.168.80.185 - - [21/Oct/2021 19:06:57] "GET /getBranch HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:07:02] "GET /static/dist/index.html HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:02] "GET /static/dist/assets/vendor.adaadc93.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:02] "GET /static/dist/assets/index.5b87c40b.css HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:02] "GET /static/dist/assets/index.df0c4e9a.js HTTP/1.1" 304 -
+fatal: destination path 'longVideoFactory' already exists and is not an empty directory.
+hint: Pulling without specifying how to reconcile divergent branches is
+hint: discouraged. You can squelch this message by running one of the following
+hint: commands sometime before your next pull:
+hint: 
+hint:   git config pull.rebase false  # merge (the default strategy)
+hint:   git config pull.rebase true   # rebase
+hint:   git config pull.ff only       # fast-forward only
+hint: 
+hint: You can replace "git config" with "git config --global" to set a default
+hint: preference for all repositories. You can also pass --rebase, --no-rebase,
+hint: or --ff-only on the command line to override the configured default per
+hint: invocation.
+192.168.80.185 - - [21/Oct/2021 19:07:02] "GET /static/dist/favicon.ico HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:07:02] "GET /getGroup HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:07:03] "GET /static/dist/index.html HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:03] "GET /static/dist/assets/index.5b87c40b.css HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:03] "GET /static/dist/assets/vendor.adaadc93.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:03] "GET /static/dist/assets/index.df0c4e9a.js HTTP/1.1" 304 -
+Already up to date.
+192.168.80.185 - - [21/Oct/2021 19:07:03] "GET /getBranch HTTP/1.1" 200 -
+fatal: destination path 'longVideoFactory' already exists and is not an empty directory.
+hint: Pulling without specifying how to reconcile divergent branches is
+hint: discouraged. You can squelch this message by running one of the following
+hint: commands sometime before your next pull:
+hint: 
+hint:   git config pull.rebase false  # merge (the default strategy)
+hint:   git config pull.rebase true   # rebase
+hint:   git config pull.ff only       # fast-forward only
+hint: 
+hint: You can replace "git config" with "git config --global" to set a default
+hint: preference for all repositories. You can also pass --rebase, --no-rebase,
+hint: or --ff-only on the command line to override the configured default per
+hint: invocation.
+192.168.80.185 - - [21/Oct/2021 19:07:03] "GET /static/dist/index.html HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:03] "GET /static/dist/assets/index.5b87c40b.css HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:03] "GET /static/dist/assets/vendor.adaadc93.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:03] "GET /static/dist/assets/index.df0c4e9a.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:03] "GET /static/dist/favicon.ico HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:07:03] "GET /getGroup HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:07:03] "GET /static/dist/index.html HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:03] "GET /static/dist/assets/vendor.adaadc93.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:03] "GET /static/dist/assets/index.5b87c40b.css HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:03] "GET /static/dist/assets/index.df0c4e9a.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:04] "GET /static/dist/favicon.ico HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:07:04] "GET /getGroup HTTP/1.1" 200 -
+Already up to date.
+fatal: destination path 'longVideoFactory' already exists and is not an empty directory.
+192.168.80.185 - - [21/Oct/2021 19:07:04] "GET /getBranch HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:07:04] "GET /static/dist/index.html HTTP/1.1" 304 -
+hint: Pulling without specifying how to reconcile divergent branches is
+hint: discouraged. You can squelch this message by running one of the following
+hint: commands sometime before your next pull:
+hint: 
+hint:   git config pull.rebase false  # merge (the default strategy)
+hint:   git config pull.rebase true   # rebase
+hint:   git config pull.ff only       # fast-forward only
+hint: 
+hint: You can replace "git config" with "git config --global" to set a default
+hint: preference for all repositories. You can also pass --rebase, --no-rebase,
+hint: or --ff-only on the command line to override the configured default per
+hint: invocation.
+192.168.80.185 - - [21/Oct/2021 19:07:04] "GET /static/dist/assets/vendor.adaadc93.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:04] "GET /static/dist/assets/index.5b87c40b.css HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:04] "GET /static/dist/assets/index.df0c4e9a.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:04] "GET /static/dist/favicon.ico HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:07:04] "GET /getGroup HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:07:04] "GET /getGroup HTTP/1.1" 200 -
+Already up to date.
+fatal: destination path 'longVideoFactory' already exists and is not an empty directory.
+192.168.80.185 - - [21/Oct/2021 19:07:04] "GET /getBranch HTTP/1.1" 200 -
+hint: Pulling without specifying how to reconcile divergent branches is
+hint: discouraged. You can squelch this message by running one of the following
+hint: commands sometime before your next pull:
+hint: 
+hint:   git config pull.rebase false  # merge (the default strategy)
+hint:   git config pull.rebase true   # rebase
+hint:   git config pull.ff only       # fast-forward only
+hint: 
+hint: You can replace "git config" with "git config --global" to set a default
+hint: preference for all repositories. You can also pass --rebase, --no-rebase,
+hint: or --ff-only on the command line to override the configured default per
+hint: invocation.
+Already up to date.
+fatal: destination path 'longVideoFactory' already exists and is not an empty directory.
+192.168.80.185 - - [21/Oct/2021 19:07:05] "GET /getBranch HTTP/1.1" 200 -
+hint: Pulling without specifying how to reconcile divergent branches is
+hint: discouraged. You can squelch this message by running one of the following
+hint: commands sometime before your next pull:
+hint: 
+hint:   git config pull.rebase false  # merge (the default strategy)
+hint:   git config pull.rebase true   # rebase
+hint:   git config pull.ff only       # fast-forward only
+hint: 
+hint: You can replace "git config" with "git config --global" to set a default
+hint: preference for all repositories. You can also pass --rebase, --no-rebase,
+hint: or --ff-only on the command line to override the configured default per
+hint: invocation.
+Already up to date.
+192.168.80.185 - - [21/Oct/2021 19:07:06] "GET /getBranch HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:07:16] "GET /static/dist/index.html HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:16] "GET /static/dist/assets/vendor.adaadc93.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:16] "GET /static/dist/assets/index.5b87c40b.css HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:16] "GET /static/dist/assets/index.df0c4e9a.js HTTP/1.1" 304 -
+fatal: destination path 'longVideoFactory' already exists and is not an empty directory.
+192.168.80.185 - - [21/Oct/2021 19:07:16] "GET /static/dist/favicon.ico HTTP/1.1" 200 -
+hint: Pulling without specifying how to reconcile divergent branches is
+hint: discouraged. You can squelch this message by running one of the following
+hint: commands sometime before your next pull:
+hint: 
+hint:   git config pull.rebase false  # merge (the default strategy)
+hint:   git config pull.rebase true   # rebase
+hint:   git config pull.ff only       # fast-forward only
+hint: 
+hint: You can replace "git config" with "git config --global" to set a default
+hint: preference for all repositories. You can also pass --rebase, --no-rebase,
+hint: or --ff-only on the command line to override the configured default per
+hint: invocation.
+192.168.80.185 - - [21/Oct/2021 19:07:17] "GET /getGroup HTTP/1.1" 200 -
+Already up to date.
+192.168.80.185 - - [21/Oct/2021 19:07:17] "GET /getBranch HTTP/1.1" 200 -
+Already on 'master'
+M	package-lock.json
+Your branch is up to date with 'origin/master'.
+hint: Pulling without specifying how to reconcile divergent branches is
+hint: discouraged. You can squelch this message by running one of the following
+hint: commands sometime before your next pull:
+hint: 
+hint:   git config pull.rebase false  # merge (the default strategy)
+hint:   git config pull.rebase true   # rebase
+hint:   git config pull.ff only       # fast-forward only
+hint: 
+hint: You can replace "git config" with "git config --global" to set a default
+hint: preference for all repositories. You can also pass --rebase, --no-rebase,
+hint: or --ff-only on the command line to override the configured default per
+hint: invocation.
+Already up to date.
+ 1: 0x100d78bad node::Abort() (.cold.1) [/usr/local/bin/node]
+ 2: 0x10003ae85 node_module_register [/usr/local/bin/node]
+ 3: 0x100040c48 node::PlatformInit() [/usr/local/bin/node]
+ 4: 0x1000407e9 node::Start(int, char**) [/usr/local/bin/node]
+ 5: 0x100001034 start [/usr/local/bin/node]
+ 6: 0x3 
+/bin/sh: line 1: 54236 Abort trap: 6           cnpm install
+ 1: 0x100d78bad node::Abort() (.cold.1) [/usr/local/bin/node]
+ 2: 0x10003ae85 node_module_register [/usr/local/bin/node]
+ 3: 0x100040c48 node::PlatformInit() [/usr/local/bin/node]
+ 4: 0x1000407e9 node::Start(int, char**) [/usr/local/bin/node]
+ 5: 0x100001034 start [/usr/local/bin/node]
+/bin/sh: line 1: 54237 Abort trap: 6           npm run build
+192.168.80.185 - - [21/Oct/2021 19:07:28] "POST /send HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:07:42] "GET /static/dist/index.html HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:42] "GET /static/dist/assets/vendor.adaadc93.js HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:42] "GET /static/dist/assets/index.5b87c40b.css HTTP/1.1" 304 -
+192.168.80.185 - - [21/Oct/2021 19:07:42] "GET /static/dist/assets/index.df0c4e9a.js HTTP/1.1" 304 -
+fatal: destination path 'longVideoFactory' already exists and is not an empty directory.
+192.168.80.185 - - [21/Oct/2021 19:07:43] "GET /static/dist/favicon.ico HTTP/1.1" 200 -
+hint: Pulling without specifying how to reconcile divergent branches is
+hint: discouraged. You can squelch this message by running one of the following
+hint: commands sometime before your next pull:
+hint: 
+hint:   git config pull.rebase false  # merge (the default strategy)
+hint:   git config pull.rebase true   # rebase
+hint:   git config pull.ff only       # fast-forward only
+hint: 
+hint: You can replace "git config" with "git config --global" to set a default
+hint: preference for all repositories. You can also pass --rebase, --no-rebase,
+hint: or --ff-only on the command line to override the configured default per
+hint: invocation.
+Already up to date.
+192.168.80.185 - - [21/Oct/2021 19:07:43] "GET /getBranch HTTP/1.1" 200 -
+192.168.80.185 - - [21/Oct/2021 19:07:43] "GET /getGroup HTTP/1.1" 200 -
+ * Serving Flask app 'main' (lazy loading)
+ * Environment: production
+   WARNING: This is a development server. Do not use it in a production deployment.
+   Use a production WSGI server instead.
+ * Debug mode: on
+ * Running on all addresses.
+   WARNING: This is a development server. Do not use it in a production deployment.
+ * Running on http://192.168.80.185:7777/ (Press CTRL+C to quit)
+ * Restarting with stat
+ * Debugger is active!
+ * Debugger PIN: 141-089-509
+ * Serving Flask app 'main' (lazy loading)
+ * Environment: production
+   WARNING: This is a development server. Do not use it in a production deployment.
+   Use a production WSGI server instead.
+ * Debug mode: on
+ * Running on all addresses.
+   WARNING: This is a development server. Do not use it in a production deployment.
+ * Running on http://192.168.80.185:7777/ (Press CTRL+C to quit)
+ * Restarting with stat
+ * Debugger is active!
+ * Debugger PIN: 141-089-509
+ * Serving Flask app 'main' (lazy loading)
+ * Environment: production
+   WARNING: This is a development server. Do not use it in a production deployment.
+   Use a production WSGI server instead.
+ * Debug mode: on
+Traceback (most recent call last):
+  File "/Users/ice/Documents/work/projects_01/auto-mini-program-tool/server/main.py", line 267, in <module>
+    app.run(host='0.0.0.0', port=7777, debug=True)
+  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 920, in run
+    run_simple(t.cast(str, host), port, self, **options)
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/serving.py", line 984, in run_simple
+    s.bind(server_address)
+OSError: [Errno 48] Address already in use
+ * Serving Flask app 'main' (lazy loading)
+ * Environment: production
+   WARNING: This is a development server. Do not use it in a production deployment.
+   Use a production WSGI server instead.
+ * Debug mode: on
+Traceback (most recent call last):
+  File "/Users/ice/Documents/work/projects_01/auto-mini-program-tool/server/main.py", line 267, in <module>
+    app.run(host='0.0.0.0', port=7777, debug=True)
+  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 920, in run
+    run_simple(t.cast(str, host), port, self, **options)
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/serving.py", line 984, in run_simple
+    s.bind(server_address)
+OSError: [Errno 48] Address already in use
+Traceback (most recent call last):
+  File "/Users/ice/Documents/work/projects_01/auto-mini-program-tool/server/main.py", line 267, in <module>
+    app.run(host='0.0.0.0', port=7777, debug=True)
+  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 920, in run
+    run_simple(t.cast(str, host), port, self, **options)
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/serving.py", line 1002, in run_simple
+    _rwr(
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/_reloader.py", line 418, in run_with_reloader
+    ensure_echo_on()
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/_reloader.py", line 398, in ensure_echo_on
+    termios.tcsetattr(sys.stdin, termios.TCSANOW, attributes)
+termios.error: (4, 'Interrupted system call')
+ * Serving Flask app 'main' (lazy loading)
+ * Environment: production
+   WARNING: This is a development server. Do not use it in a production deployment.
+   Use a production WSGI server instead.
+ * Debug mode: on
+ * Running on all addresses.
+   WARNING: This is a development server. Do not use it in a production deployment.
+ * Running on http://192.168.80.185:7777/ (Press CTRL+C to quit)
+ * Restarting with stat
+ * Debugger is active!
+ * Debugger PIN: 141-089-509
+nohup: desdk_rpc_server: No such file or directory
+Traceback (most recent call last):
+  File "/Users/ice/Documents/work/projects_01/auto-mini-program-tool/server/main.py", line 267, in <module>
+    app.run(host='0.0.0.0', port=7777, debug=True)
+  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 920, in run
+    run_simple(t.cast(str, host), port, self, **options)
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/serving.py", line 1002, in run_simple
+    _rwr(
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/_reloader.py", line 418, in run_with_reloader
+    ensure_echo_on()
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/_reloader.py", line 398, in ensure_echo_on
+    termios.tcsetattr(sys.stdin, termios.TCSANOW, attributes)
+termios.error: (4, 'Interrupted system call')

+ 23 - 0
server/runoob.log

@@ -0,0 +1,23 @@
+ * Serving Flask app 'main' (lazy loading)
+ * Environment: production
+   WARNING: This is a development server. Do not use it in a production deployment.
+   Use a production WSGI server instead.
+ * Debug mode: on
+ * Running on all addresses.
+   WARNING: This is a development server. Do not use it in a production deployment.
+ * Running on http://192.168.80.185:7777/ (Press CTRL+C to quit)
+ * Restarting with stat
+ * Debugger is active!
+ * Debugger PIN: 141-089-509
+Traceback (most recent call last):
+  File "/Users/ice/Documents/work/projects_01/auto-mini-program-tool/server/main.py", line 267, in <module>
+    app.run(host='0.0.0.0', port=7777, debug=True)
+  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 920, in run
+    run_simple(t.cast(str, host), port, self, **options)
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/serving.py", line 1002, in run_simple
+    _rwr(
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/_reloader.py", line 418, in run_with_reloader
+    ensure_echo_on()
+  File "/usr/local/lib/python3.9/site-packages/werkzeug/_reloader.py", line 398, in ensure_echo_on
+    termios.tcsetattr(sys.stdin, termios.TCSANOW, attributes)
+termios.error: (4, 'Interrupted system call')