From 4729a48d39822a471afab6ec579cf11cca801331 Mon Sep 17 00:00:00 2001 From: vapao Date: Sat, 9 Jul 2022 23:20:49 +0800 Subject: [PATCH] =?UTF-8?q?U=20=E4=BC=98=E5=8C=96=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=89=A7=E8=A1=8C=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spug_api/apps/deploy/helper.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/spug_api/apps/deploy/helper.py b/spug_api/apps/deploy/helper.py index 5fda9a3..d798ccb 100644 --- a/spug_api/apps/deploy/helper.py +++ b/spug_api/apps/deploy/helper.py @@ -2,7 +2,7 @@ # Copyright: (c) # Released under the AGPL-3.0 License. from django.template.defaultfilters import filesizeformat -from libs.utils import human_datetime, render_str +from libs.utils import human_datetime, render_str, str_decode from libs.spug import Notification from apps.host.models import Host from functools import partial @@ -274,12 +274,18 @@ class Helper: env = dict(env.items()) env.update(os.environ) task = subprocess.Popen(command, env=env, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + message = b'' while True: - message = task.stdout.readline() - if not message: + output = task.stdout.read(1) + if not output: break - message = message.decode().rstrip('\r\n') - self.send_info('local', message + '\r\n') + if output in (b'\r', b'\n'): + message += b'\r\n' if output == b'\n' else b'\r' + message = str_decode(message) + self.send_info('local', message) + message = b'' + else: + message += output if task.wait() != 0: self.send_error('local', f'exit code: {task.returncode}')