mirror of https://github.com/openspug/spug
U 优化本地任务执行展示
parent
0546c47762
commit
4729a48d39
|
@ -2,7 +2,7 @@
|
|||
# Copyright: (c) <spug.dev@gmail.com>
|
||||
# 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}')
|
||||
|
||||
|
|
Loading…
Reference in New Issue