U 优化自定义发布数据清理机制

pull/410/head
vapao 2021-11-25 17:25:49 +08:00
parent fbd3255540
commit a37b736e65
2 changed files with 9 additions and 4 deletions

View File

@ -20,6 +20,7 @@ class Helper:
self.rds = rds
self.key = key
self.rds.delete(self.key)
self.callback = []
@classmethod
def _make_dd_notify(cls, url, action, req, version, host_str):
@ -201,6 +202,9 @@ class Helper:
else:
raise NotImplementedError
def add_callback(self, func):
self.callback.append(func)
def parse_filter_rule(self, data: str, sep='\n'):
data, files = data.strip(), []
if data:
@ -230,6 +234,9 @@ class Helper:
# save logs for two weeks
self.rds.expire(self.key, 14 * 24 * 60 * 60)
self.rds.close()
# callback
for func in self.callback:
func()
def local(self, command, env=None):
if env:

View File

@ -11,6 +11,7 @@ from apps.repository.models import Repository
from apps.repository.utils import dispatch as build_repository
from apps.deploy.helper import Helper, SpugError
from concurrent import futures
from functools import partial
import json
import uuid
import os
@ -128,7 +129,6 @@ def _ext2_deploy(req, helper, env):
step += 1
helper.send_step('local', 100, '')
tmp_transfer_file = None
for action in host_actions:
if action.get('type') == 'transfer':
if action.get('src_mode') == '1':
@ -157,7 +157,7 @@ def _ext2_deploy(req, helper, env):
tar_gz_file = f'{req.spug_version}.tar.gz'
helper.local(f'cd {sp_dir} && tar -zcf {tar_gz_file} {exclude} {contain}')
helper.send_info('local', f'{human_time()} \033[32m完成√\033[0m\r\n')
tmp_transfer_file = os.path.join(sp_dir, tar_gz_file)
helper.add_callback(partial(os.remove, os.path.join(sp_dir, tar_gz_file)))
break
if host_actions:
if req.deploy.is_parallel:
@ -175,8 +175,6 @@ def _ext2_deploy(req, helper, env):
latest_exception = exception
if not isinstance(exception, SpugError):
helper.send_error(t.h_id, f'Exception: {exception}', False)
if tmp_transfer_file:
os.remove(tmp_transfer_file)
if latest_exception:
raise latest_exception
else: