Пример #1
0
 def copy_black(self):
     self.G_DEBUG_LOG.info('[BASE.copy_black.start.....]')
     block_path = 'B:\\tools\\sweeper\\black.xml'
     base_path = 'c:\\work\\munu_client\\sweeper\\'
     self.G_DEBUG_LOG.info(block_path + '>' + base_path)
     if os.path.exists(block_path):
         CLASS_COMMON_UTIL.python_copy(block_path, base_path)
     self.G_DEBUG_LOG.info('[BASE.copy_black.end.....]')
Пример #2
0
    def result_action(self):
        self.G_DEBUG_LOG.info('[BASE.result_action.start.....]')
        #RB_small
        if not os.path.exists(self.G_SMALL_PATH):
            os.makedirs(self.G_SMALL_PATH)
        if self.G_RENDER_OS == '0':
            output_path = "/output"
            outputbak_path = "/outputbak"
            sp_path = 'outputdata5'
            output_folder = self.G_OUTPUT_USER_PATH[
                self.G_OUTPUT_USER_PATH.rfind(sp_path) +
                len(sp_path):len(self.G_OUTPUT_USER_PATH)]
            output_mnt_path = self.G_OUTPUT_USER_PATH.replace(
                output_folder, '').replace('\\', '/')
            output_mnt = 'mount -t cifs -o username=administrator,password=Rayvision@2016,codepage=936,iocharset=gb2312 ' + output_mnt_path + ' ' + output_path

            if not os.path.exists(output_path):
                os.makedirs(output_path)
            CLASS_COMMON_UTIL.cmd(output_mnt, my_shell=True)

            output_path = output_path + output_folder.replace("\\", "/")
            if not os.path.exists(output_path):
                os.makedirs(output_path)
            CLASS_COMMON_UTIL.python_copy(self.G_WORK_RENDER_TASK_OUTPUT,
                                          output_path)
            CLASS_COMMON_UTIL.python_copy(self.G_WORK_RENDER_TASK_OUTPUT,
                                          self.G_WORK_RENDER_TASK_OUTPUTBAK)
        else:
            # output=self.G_OUTPUT_USER_PATH.encode(sys.getfilesystemencoding())
            output = self.G_OUTPUT_USER_PATH
            if self.G_CG_TILE_COUNT != '1' and self.G_CG_TILE_COUNT != self.G_CG_TILE:
                output = self.G_TILES_PATH

            cmd1 = 'c:\\fcopy\\FastCopy.exe  /speed=full /force_close  /no_confirm_stop /force_start "' + self.G_WORK_RENDER_TASK_OUTPUT.replace(
                '/', '\\') + '" /to="' + output + '"'
            # cmd2='"' +frame_check + '" "' + self.G_WORK_RENDER_TASK_OUTPUT + '" "'+ output.rstrip()+'"'
            cmd3 = 'c:\\fcopy\\FastCopy.exe /cmd=move /speed=full /force_close  /no_confirm_stop /force_start "' + self.G_WORK_RENDER_TASK_OUTPUT.replace(
                '/', '\\'
            ) + '\\*.*" /to="' + self.G_WORK_RENDER_TASK_OUTPUTBAK.replace(
                '/', '\\') + '"'

            CLASS_COMMON_UTIL.cmd(cmd1, my_log=self.G_DEBUG_LOG, try_count=3)
            # CLASS_COMMON_UTIL.cmd_python3(cmd1,my_log=self.G_DEBUG_LOG)
            try:
                self.check_result()
            except Exception as e:
                print('[check_result.err]')
                print(e)
            CLASS_FRAME_CHECKER.main(self.G_WORK_RENDER_TASK_OUTPUT,
                                     output,
                                     my_log=self.G_DEBUG_LOG)
            # CLASS_COMMON_UTIL.cmd(cmd2,my_log=self.G_DEBUG_LOG)
            CLASS_COMMON_UTIL.cmd(cmd3,
                                  my_log=self.G_DEBUG_LOG,
                                  try_count=3,
                                  continue_on_error=True)
        self.G_DEBUG_LOG.info('[BASE.result_action.end.....]')
Пример #3
0
 def copy_black(self):
     self.G_DEBUG_LOG.info('[BASE.copy_black.start.....]')
     block_path = 'B:\\tools\\sweeper\\black.xml'
     base_path='c:\\work\\munu_client\\sweeper\\'
     if self.G_RENDER_OS=='Linux':
         block_path="\\B\\tools\\sweeper\\black.xml"
         base_path="/root/rayvision/work/munu_client/sweeper/"
     self.G_DEBUG_LOG.info(block_path+'>'+base_path)
     if os.path.exists(block_path):
         CLASS_COMMON_UTIL.python_copy(block_path,base_path)
     self.G_DEBUG_LOG.info('[BASE.copy_black.end.....]')
Пример #4
0
    def RB_KAFKA_NOTIFY(self):  #9
        if self.G_ACTION not in ['Analyze', 'Pre']:
            self.format_log('kafka发送消息给平台', 'start')
            self.G_DEBUG_LOG.info('[BASE.RB_KAFKA_NOTIFY.start.....]')

            send_time = str(int(time.time()))
            self.G_KAFKA_MESSAGE_DICT["munu_task_id"] = self.G_MUNU_ID
            self.G_KAFKA_MESSAGE_DICT["munu_job_id"] = self.G_JOB_ID
            self.G_KAFKA_MESSAGE_DICT["recommit_flag"] = self.G_RECOMMIT_FLAG
            self.G_KAFKA_MESSAGE_DICT["action"] = self.G_ACTION
            self.G_KAFKA_MESSAGE_DICT['platform'] = self.G_PLATFORM
            self.G_KAFKA_MESSAGE_DICT['send_time'] = send_time
            self.G_KAFKA_MESSAGE_DICT['zone'] = self.G_ZONE
            self.G_KAFKA_MESSAGE_DICT['node_name'] = self.G_NODE_ID
            self.G_KAFKA_MESSAGE_DICT['task_id'] = self.G_TASK_ID
            self.G_KAFKA_MESSAGE_DICT['render_type'] = self.G_RENDER_CORE_TYPE
            #self.G_KAFKA_MESSAGE_DICT['start_time']=self.G_START_TIME
            #self.G_KAFKA_MESSAGE_DICT['big_pic']=[]
            #self.G_KAFKA_MESSAGE_DICT['small_pic']=[]
            #self.G_KAFKA_MESSAGE_DICT['end_time']=self.G_END_TIME
            #self.G_KAFKA_MESSAGE_DICT['distribute_node'] = '1'

            self.G_DEBUG_LOG.info('G_KAFKA_MESSAGE_DICT=' +
                                  str(self.G_KAFKA_MESSAGE_DICT))

            # write kafka message json file(e.g. C:\work\render\10002736\2017120500004_0_1.json)
            kafka_message_filename = self.G_MUNU_ID + '_' + self.G_JOB_ID + '.json'
            if self.G_RECOMMIT_FLAG != '':
                kafka_message_filename = self.G_MUNU_ID + '_' + self.G_JOB_ID + '_' + self.G_RECOMMIT_FLAG + '.json'
            kafka_message_json = os.path.join(self.G_WORK_RENDER_TASK,
                                              kafka_message_filename)
            kafka_message_json_str = json.dumps(self.G_KAFKA_MESSAGE_DICT,
                                                ensure_ascii=False)
            CLASS_COMMON_UTIL.write_file(kafka_message_json_str,
                                         kafka_message_json)
            CLASS_COMMON_UTIL.python_copy(kafka_message_json,
                                          self.G_CONFIG_PATH)

            try:
                kafka_result = CLASS_KAFKA.produce(self.G_KAFKA_MESSAGE_DICT,
                                                   self.G_KAFKA_SERVER,
                                                   self.G_KAFKA_TOPIC)
                self.G_DEBUG_LOG.info('kafka_result=' + str(kafka_result))
            except:
                CLASS_COMMON_UTIL.error_exit_log(self.G_DEBUG_LOG,
                                                 'Send Kafka Message Failed',
                                                 is_exit=False)

            self.G_DEBUG_LOG.info('[BASE.RB_KAFKA_NOTIFY.end.....]')
            self.format_log('done', 'end')
Пример #5
0
    def RB_KAFKA_NOTIFY(self):  #9
        if self.G_ACTION not in ['Analyze', 'Pre']:
            self.format_log('kafka发送消息给平台', 'start')
            self.G_DEBUG_LOG.info('[BASE.RB_KAFKA_NOTIFY.start.....]')

            send_time = str(int(time.time()))
            self.G_KAFKA_MESSAGE_DICT["action"] = self.G_ACTION
            self.G_KAFKA_MESSAGE_DICT['platform'] = self.G_PLATFORM
            self.G_KAFKA_MESSAGE_DICT['sendTime'] = send_time
            self.G_KAFKA_MESSAGE_DICT['zone'] = self.G_ZONE
            self.G_KAFKA_MESSAGE_DICT['nodeName'] = self.G_NODE_ID
            self.G_KAFKA_MESSAGE_DICT['jobId'] = self.G_JOB_ID
            self.G_KAFKA_MESSAGE_DICT['taskId'] = self.G_TASK_ID
            self.G_KAFKA_MESSAGE_DICT['renderType'] = self.G_RENDER_CORE_TYPE
            #self.G_KAFKA_MESSAGE_DICT['startTime']=self.G_START_TIME
            #self.G_KAFKA_MESSAGE_DICT['bigPic']=[]
            #self.G_KAFKA_MESSAGE_DICT['smallPic']=[]
            #self.G_KAFKA_MESSAGE_DICT['endTime']=self.G_END_TIME
            #self.G_KAFKA_MESSAGE_DICT['distributeNode'] = '1'

            self.G_DEBUG_LOG.info('G_KAFKA_MESSAGE_DICT=' +
                                  str(self.G_KAFKA_MESSAGE_DICT))

            # write kafka message json file(e.g. C:\work\render\10002736\1849754-10002736-frame0001.json)
            # kafka_message_filename = self.G_USER_ID+'-'+self.G_TASK_ID+'-'+self.G_JOB_NAME+'.json'
            kafka_message_filename = self.G_JOB_ID + '_' + self.G_ACTION + '_' + send_time + '.json'
            kafka_message_json = os.path.join(self.G_WORK_RENDER_TASK,
                                              kafka_message_filename)
            kafka_message_json_str = json.dumps(self.G_KAFKA_MESSAGE_DICT,
                                                ensure_ascii=False)
            CLASS_COMMON_UTIL.write_file(kafka_message_json_str,
                                         kafka_message_json)
            CLASS_COMMON_UTIL.python_copy(kafka_message_json,
                                          self.G_CONFIG_PATH)

            try:
                kafka_result = CLASS_KAFKA.produce(self.G_KAFKA_MESSAGE_DICT,
                                                   self.G_KAFKA_SERVER,
                                                   self.G_KAFKA_TOPIC)
                self.G_DEBUG_LOG.info('kafka_result=' + str(kafka_result))
            except:
                CLASS_COMMON_UTIL.error_exit_log(self.G_DEBUG_LOG,
                                                 'Send Kafka Message Failed',
                                                 is_exit=False)

            self.G_DEBUG_LOG.info('[BASE.RB_KAFKA_NOTIFY.end.....]')
            self.format_log('done', 'end')
Пример #6
0
    def RB_KAFKA_NOTIFY(self):  #9
        self.format_log('kafka发送消息给平台', 'start')
        self.G_DEBUG_LOG.info('[BASE.RB_KAFKA_NOTIFY.start.....]')

        start_time = time.time()
        params = {}
        params["messageKey"] = self.G_ACTION
        params['platform'] = self.G_PLATFORM
        params['messageTime'] = str(int(start_time))
        params['messageId'] = self.G_TASK_ID + '_' + params[
            "messageKey"] + '_' + self.G_JOB_ID

        self.G_KAFKA_MESSAGE_BODY_DICT['zone'] = self.G_ZONE
        self.G_KAFKA_MESSAGE_BODY_DICT['nodeName'] = self.G_NODE_ID
        self.G_KAFKA_MESSAGE_BODY_DICT['jobId'] = self.G_JOB_ID
        self.G_KAFKA_MESSAGE_BODY_DICT['taskId'] = self.G_TASK_ID
        self.G_KAFKA_MESSAGE_BODY_DICT['renderType'] = self.G_RENDER_CORE_TYPE
        #self.G_KAFKA_MESSAGE_BODY_DICT['startTime']=self.G_START_TIME
        #self.G_KAFKA_MESSAGE_BODY_DICT['smallPic']=self.G_SMALL_PIC
        #self.G_KAFKA_MESSAGE_BODY_DICT['endTime']=self.G_END_TIME
        params['messageBody'] = self.G_KAFKA_MESSAGE_BODY_DICT

        self.G_DEBUG_LOG.info('params=' + str(params))

        # write kafka message json file(e.g. C:\work\render\10002736\1849754-10002736-frame0001.json)
        kafka_message_filename = self.G_USER_ID + '-' + self.G_TASK_ID + '-' + self.G_JOB_NAME + '.json'
        kafka_message_json = os.path.join(self.G_WORK_RENDER_TASK,
                                          kafka_message_filename)
        kafka_message_json_str = json.dumps(params, ensure_ascii=False)
        CLASS_COMMON_UTIL.write_file(kafka_message_json_str,
                                     kafka_message_json)
        CLASS_COMMON_UTIL.python_copy(kafka_message_json, self.G_CONFIG_PATH)

        try:
            kafka_result = CLASS_KAFKA.produce(params, self.G_KAFKA_SERVER,
                                               self.G_KAFKA_TOPIC)
            self.G_DEBUG_LOG.info('kafka_result=' + str(kafka_result))
        except:
            CLASS_COMMON_UTIL.error_exit_log(self.G_DEBUG_LOG,
                                             'Send Kafka Message Failed',
                                             is_exit=False)

        self.G_DEBUG_LOG.info('[BASE.RB_KAFKA_NOTIFY.end.....]')
        self.format_log('done', 'end')
Пример #7
0
 def copy_cfg_to_server(self,node_task_json,node_asset_json,node_tips_json):
     self.G_DEBUG_LOG.info('[BASE.RBhanResult.node_task_json.....]'+node_task_json)
     self.G_DEBUG_LOG.info('[BASE.RBhanResult.node_asset_json.....]'+node_asset_json)
     self.G_DEBUG_LOG.info('[BASE.RBhanResult.node_tips_json.....]'+node_tips_json)
     CLASS_COMMON_UTIL.python_copy(node_task_json,self.G_CONFIG_PATH)
     CLASS_COMMON_UTIL.python_copy(node_asset_json,self.G_CONFIG_PATH)
     CLASS_COMMON_UTIL.python_copy(node_tips_json,self.G_CONFIG_PATH)
Пример #8
0
    def __init__(self,**param_dict):
        print '[BASE.init.start.....]'
        self.G_RENDER_CORE_TYPE = 'cpu'
        print param_dict        
        
        # define global variables
        # G_JOB_ID,G_USER_ID,G_USER_ID_PARENT,G_TASK_ID,G_SCRIPT_POOL,G_ACTION,G_RENDER_OS,G_SYS_ARGVS,G_TASK_JSON  &&  G_CG_TILE,G_CG_TILE_COUNT,G_CG_FRAMES,G_CG_LAYER_NAME,G_SCHEDULER_CLUSTER_ID,G_SCHEDULER_CLUSTER_NODES
        #G_NODE_PY
        for key in param_dict.keys():
            if key.startswith('G'):
                exec('self.'+key+'=param_dict["'+key+'"]')
        
        self.G_ACTION_ID=self.G_ACTION+'_'+self.G_JOB_ID
        
        self.G_MUNU_ID=self.G_SYS_ARGVS[1]
        self.G_JOB_NAME=self.G_SYS_ARGVS[3]
        self.G_NODE_ID=self.G_SYS_ARGVS[4]  #11338764789520
        self.G_NODE_NAME=self.G_SYS_ARGVS[5]
        
        self.G_WORK='c:/work'
        self.G_LOG_WORK='C:/log/render'
        if self.G_RENDER_OS=='Linux':
            self.G_LOG_WORK='/tmp/nzs-data/log/render'
            self.G_WORK='/tmp/nzs-data/work'

        #-----------------------------------------log-----------------------------------------------
        self.G_DEBUG_LOG=logging.getLogger('debug_log')
        self.G_RENDER_LOG=logging.getLogger('render_log')
        self.init_log()
        
        #-----------------------------------------analyse frame-----------------------------------------------
        if 'G_CG_FRAMES' in param_dict:
            self.G_CG_START_FRAME = None
            self.G_CG_END_FRAME = None
            self.G_CG_BY_FRAME = None
            patt = '(-?\d+)(?:-?(-?\d+)(?:\[(-?\d+)\])?)?'
            m = re.match(patt,self.G_CG_FRAMES)
            if m != None:
                self.G_CG_START_FRAME = m.group(1)
                self.G_CG_END_FRAME = m.group(2)
                self.G_CG_BY_FRAME = m.group(3)
                if self.G_CG_END_FRAME == None:
                    self.G_CG_END_FRAME = self.G_CG_START_FRAME
                if self.G_CG_BY_FRAME == None:
                    self.G_CG_BY_FRAME = '1'
            else:
                print 'frames is not match'
        
        if 'G_CG_TILE' not in param_dict or ('G_CG_TILE' in param_dict and (self.G_CG_TILE == None or self.G_CG_TILE == '')):
            self.G_CG_TILE='0'
        if 'G_CG_TILE_COUNT' not in param_dict or ('G_CG_TILE_COUNT' in param_dict and (self.G_CG_TILE_COUNT == None or self.G_CG_TILE_COUNT == '')):
            self.G_CG_TILE_COUNT='1'
            
               
        
        #-----------------------------------------work directory-----------------------------------------------
        self.G_WORK_RENDER=os.path.normpath(os.path.join(self.G_WORK,'render'))
        self.G_WORK_RENDER_TASK=os.path.normpath(os.path.join(self.G_WORK_RENDER,self.G_TASK_ID))
        self.G_WORK_RENDER_TASK_CFG=os.path.normpath(os.path.join(self.G_WORK_RENDER_TASK,'cfg'))
        self.G_WORK_RENDER_TASK_OUTPUT=os.path.normpath(os.path.join(self.G_WORK_RENDER_TASK,'output'))
        self.G_WORK_RENDER_TASK_OUTPUTBAK=os.path.normpath(os.path.join(self.G_WORK_RENDER_TASK,'outputbak'))
        self.G_WORK_RENDER_TASK_SMALL=os.path.normpath(os.path.join(self.G_WORK_RENDER_TASK,'small'))
        self.make_dir()
        
        #-----------------------------------------kafka-----------------------------------------------
        # self.G_KAFKA_HOST='10.60.96.143'
        # self.G_KAFKA_PORT=9091
        self.G_KAFKA_SERVER = ["10.60.96.143:9091"]
        self.G_KAFKA_TOPIC= 'dev-munu-topic'
        self.G_KAFKA_MESSAGE_BODY_DICT={}
        self.G_KAFKA_MESSAGE_BODY_DICT['startTime']=str(int(time.time()))
        self.G_KAFKA_MESSAGE_BODY_DICT['endTime']=str(int(time.time()))
        #self.G_START_TIME=''
        #self.G_SMALL_PIC=''
        #self.G_END_TIME=''
        
        #-----------------------------------------task.json-----------------------------------------------
        self.G_DEBUG_LOG.info(self.G_TASK_JSON)
        if not os.path.exists(self.G_TASK_JSON):
            CLASS_COMMON_UTIL.error_exit_log(self.G_DEBUG_LOG,'task.json not exists')
        CLASS_COMMON_UTIL.python_copy(os.path.normpath(self.G_TASK_JSON),os.path.normpath(self.G_WORK_RENDER_TASK_CFG))    
        self.G_TASK_JSON=os.path.normpath(os.path.join(self.G_WORK_RENDER_TASK_CFG,'task.json'))
        self.G_TASK_JSON_DICT=eval(open(self.G_TASK_JSON, 'r').read())
        self.G_DEBUG_LOG.info(str(self.G_TASK_JSON_DICT))
        
        
        self.G_CG_CONFIG_DICT=self.G_TASK_JSON_DICT['software_config']
        self.G_CG_VERSION=self.G_TASK_JSON_DICT['software_config']['cg_name']+' '+self.G_TASK_JSON_DICT['software_config']['cg_version']
        self.G_ZONE=self.G_TASK_JSON_DICT['system_info']['common']['zone']
        self.G_PLATFORM=self.G_TASK_JSON_DICT['system_info']['common']['platform']
        self.G_TILES_PATH=os.path.normpath(self.G_TASK_JSON_DICT['system_info']['common']['tiles_path'])
        self.G_INPUT_CG_FILE=os.path.normpath(self.G_TASK_JSON_DICT['system_info']['common']['input_cg_file'])
        self.G_CHANNEL=self.G_TASK_JSON_DICT['system_info']['common']['channel']
        self.G_INPUT_PROJECT_PATH=os.path.normpath(self.G_TASK_JSON_DICT['system_info']['common']['input_project_path'])
        self.G_CONFIG_PATH=os.path.normpath(self.G_TASK_JSON_DICT['system_info']['common']['config_path']+'/')
        self.G_SMALL_PATH=os.path.normpath(self.G_TASK_JSON_DICT['system_info']['common']['small_Path'])
        self.G_OUTPUT_USER_PATH=os.path.normpath(self.G_TASK_JSON_DICT['system_info']['common']['output_user_path'])
        self.G_INPUT_USER_PATH=os.path.normpath(self.G_TASK_JSON_DICT['system_info']['common']['input_user_path'])
        self.G_PLUGIN_PATH=os.path.normpath(self.G_TASK_JSON_DICT['system_info']['common']['plugin_path'])
        self.G_TEMP_PATH=os.path.normpath(self.G_TASK_JSON_DICT['system_info']['common']['temp_path'])
        self.G_TIPS_JSON=os.path.normpath(os.path.join(self.G_WORK_RENDER_TASK_CFG,'tips.json'))
        self.G_DRIVERC_7Z=os.path.normpath('c:/7-Zip/7z.exe')
        
        #-----------------------------------------assert.json-----------------------------------------------
        self.G_ASSET_JSON=os.path.normpath(os.path.join(self.G_WORK_RENDER_TASK_CFG,'asset.json'))
        asset_json=os.path.join(self.G_CONFIG_PATH,'asset.json')
        if os.path.exists(asset_json):
            CLASS_COMMON_UTIL.python_copy(asset_json,self.G_WORK_RENDER_TASK_CFG)    
            self.G_ASSET_JSON_DICT=eval(open(asset_json, 'r').read())
            
        
        
        print '[BASE.init.end.....]'
Пример #9
0
    def __init__(self, **param_dict):
        print('[BASE.init.start.....]')
        # print(param_dict)

        # define global variables
        # G_JOB_NAME,G_JOB_ID,G_CG_FRAMES,G_CG_LAYER_NAME,G_CG_OPTION,G_CG_TILE,G_CG_TILECOUNT
        # G_CG_NAME,G_ACTION,G_USER_ID,G_TASK_ID,G_TASK_JSON,G_USER_ID_PARENT,G_SCRIPT_POOL,G_RENDER_OS,G_SYS_ARGVS,G_NODE_PY  &&  G_SCHEDULER_CLUSTER_ID,G_SCHEDULER_CLUSTER_NODES
        for key in list(param_dict.keys()):
            if key.startswith('G'):
                exec('self.' + key + '=param_dict["' + key + '"]')

        self.G_MUNU_ID = self.G_SYS_ARGVS[1]  #munu_task_id
        self.G_JOB_ID = self.G_SYS_ARGVS[2]  #munu_job_id
        self.G_JOB_NAME = self.G_SYS_ARGVS[3]  #munu_job_name
        self.G_NODE_ID = self.G_SYS_ARGVS[4]  #11338764789520
        self.G_NODE_NAME = self.G_SYS_ARGVS[5]  #GD232
        self.G_RECOMMIT_FLAG = self.G_SYS_ARGVS[
            6]  #recommit_flag,default is "0"

        self.G_ACTION_ID = self.G_ACTION + '_' + self.G_MUNU_ID + '_' + self.G_JOB_ID

        self.G_CG_PROCESS_FLAG = 0  # use with B:\config\cg_process.json

        self.G_WORK = 'c:/work'
        self.G_LOG_WORK = 'C:/log/render'
        if self.G_RENDER_OS == '0':  #G_RENDER_OS:0 linux ,1 windows
            self.G_LOG_WORK = '/tmp/nzs-data/log/render'
            self.G_WORK = '/tmp/nzs-data/work'

        #-----------------------------------------log-----------------------------------------------
        self.G_DEBUG_LOG = logging.getLogger('debug_log')
        self.G_RENDER_LOG = logging.getLogger('render_log')
        self.init_log()

        #-----------------------------------------analyse frame-----------------------------------------------
        if 'G_CG_FRAMES' in param_dict:
            self.G_CG_START_FRAME = None
            self.G_CG_END_FRAME = None
            self.G_CG_BY_FRAME = None
            patt = '(-?\d+)(?:-?(-?\d+)(?:\[(-?\d+)\])?)?'
            m = re.match(patt, self.G_CG_FRAMES)
            if m != None:
                self.G_CG_START_FRAME = m.group(1)
                self.G_CG_END_FRAME = m.group(2)
                self.G_CG_BY_FRAME = m.group(3)
                if self.G_CG_END_FRAME == None:
                    self.G_CG_END_FRAME = self.G_CG_START_FRAME
                if self.G_CG_BY_FRAME == None:
                    self.G_CG_BY_FRAME = '1'
            else:
                print('frames is not match')

        if 'G_CG_TILE' not in param_dict or ('G_CG_TILE' in param_dict and
                                             (self.G_CG_TILE == None
                                              or self.G_CG_TILE == '')):
            self.G_CG_TILE = '0'
        if 'G_CG_TILE_COUNT' not in param_dict or (
                'G_CG_TILE_COUNT' in param_dict and
            (self.G_CG_TILE_COUNT == None or self.G_CG_TILE_COUNT == '')):
            self.G_CG_TILE_COUNT = '1'

        #-----------------------------------------work directory-----------------------------------------------
        self.G_WORK_RENDER = os.path.normpath(
            os.path.join(self.G_WORK, 'render'))
        self.G_WORK_RENDER_TASK = os.path.normpath(
            os.path.join(self.G_WORK_RENDER, self.G_TASK_ID))
        self.G_WORK_RENDER_TASK_CFG = os.path.normpath(
            os.path.join(self.G_WORK_RENDER_TASK, 'cfg'))
        self.G_WORK_RENDER_TASK_OUTPUT = os.path.normpath(
            os.path.join(self.G_WORK_RENDER_TASK, 'output'))
        self.G_WORK_RENDER_TASK_OUTPUTBAK = os.path.normpath(
            os.path.join(self.G_WORK_RENDER_TASK, 'outputbak'))
        self.G_WORK_RENDER_TASK_SMALL = os.path.normpath(
            os.path.join(self.G_WORK_RENDER_TASK, 'small'))
        self.make_dir()

        # -----------------------------------------kafka-----------------------------------------------
        # self.G_KAFKA_MESSAGE_DICT={}
        # self.G_KAFKA_MESSAGE_DICT['start_time']=str(int(time.time()))
        # self.G_KAFKA_MESSAGE_DICT['end_time']=str(int(time.time()))
        # self.G_KAFKA_MESSAGE_DICT['big_pic']=[]
        # self.G_KAFKA_MESSAGE_DICT['small_pic']=[]
        # self.G_KAFKA_MESSAGE_DICT['distribute_node'] = '1'

        # self.G_KAFKA_HOST='10.60.96.142'
        # self.G_KAFKA_PORT=9092
        # self.G_KAFKA_TOPIC= 'dev-munu-topic'
        # self.G_KAFKA_MESSAGE_BODY_DICT={}
        # self.G_KAFKA_MESSAGE_BODY_DICT['startTime']=str(int(time.time()))
        # self.G_KAFKA_MESSAGE_BODY_DICT['endTime']=str(int(time.time()))
        #self.G_START_TIME=''
        #self.G_SMALL_PIC=''
        #self.G_END_TIME=''

        #-----------------------------------------task.json-----------------------------------------------
        self.G_DEBUG_LOG.info(self.G_TASK_JSON)
        if not os.path.exists(self.G_TASK_JSON):
            CLASS_COMMON_UTIL.error_exit_log(self.G_DEBUG_LOG,
                                             'task.json not exists')
        CLASS_COMMON_UTIL.python_copy(
            os.path.normpath(self.G_TASK_JSON),
            os.path.normpath(self.G_WORK_RENDER_TASK_CFG))
        self.G_TASK_JSON = os.path.normpath(
            os.path.join(self.G_WORK_RENDER_TASK_CFG, 'task.json'))
        self.G_TASK_JSON_DICT = eval(
            codecs.open(self.G_TASK_JSON, 'r', 'utf-8').read())
        self.G_DEBUG_LOG.info(str(self.G_TASK_JSON_DICT))

        self.G_CG_CONFIG_DICT = self.G_TASK_JSON_DICT['software_config']
        self.G_CG_VERSION = self.G_TASK_JSON_DICT['software_config'][
            'cg_name'] + ' ' + self.G_TASK_JSON_DICT['software_config'][
                'cg_version']
        self.G_ZONE = self.G_TASK_JSON_DICT['system_info']['common']['zone']
        self.G_PLATFORM = self.G_TASK_JSON_DICT['system_info']['common'][
            'platform']
        self.G_AUTO_COMMIT = str(
            self.G_TASK_JSON_DICT['system_info']['common']['auto_commit'])
        self.G_TILES_PATH = os.path.normpath(
            self.G_TASK_JSON_DICT['system_info']['common']['tiles_path'])
        self.G_INPUT_CG_FILE = os.path.normpath(
            self.G_TASK_JSON_DICT['system_info']['common']['input_cg_file'])
        self.G_CHANNEL = self.G_TASK_JSON_DICT['system_info']['common'][
            'channel']
        self.G_INPUT_PROJECT_PATH = os.path.normpath(
            self.G_TASK_JSON_DICT['system_info']['common']
            ['input_project_path'])
        self.G_CONFIG_PATH = os.path.normpath(
            self.G_TASK_JSON_DICT['system_info']['common']['config_path'] +
            '/')
        self.G_SMALL_PATH = os.path.normpath(
            self.G_TASK_JSON_DICT['system_info']['common']['small_Path'])
        self.G_INPUT_USER_PATH = os.path.normpath(
            self.G_TASK_JSON_DICT['system_info']['common']['input_user_path'])
        self.G_PLUGIN_PATH = os.path.normpath(
            self.G_TASK_JSON_DICT['system_info']['common']['plugin_path'])
        self.G_TEMP_PATH = os.path.normpath(
            self.G_TASK_JSON_DICT['system_info']['common']['temp_path'])
        self.G_GRAB_PATH = os.path.normpath(
            self.G_TASK_JSON_DICT['system_info']['common']['grab_path'])
        self.G_OUTPUT_USER_PATH = os.path.normpath(
            self.G_TASK_JSON_DICT['system_info']['common']['output_user_path'])
        self.G_OUTPUT_USER_PATH = os.path.join(
            self.G_OUTPUT_USER_PATH, self.G_SMALL_TASK_ID +
            self.G_OUTPUT_USER_PATH.split(os.sep)[-1][len(self.G_TASK_ID):])
        ##KAFKA
        # self.G_KAFKA_SERVER=self.G_TASK_JSON_DICT['system_info']['common']['kafka_server']
        # self.G_KAFKA_TOPIC=self.G_TASK_JSON_DICT['system_info']['common']['kafka_topic']
        ##cpu/gpu
        self.G_RENDER_CORE_TYPE = 'cpu'
        if 'render_core_type' in self.G_TASK_JSON_DICT['system_info'][
                'common']:
            self.G_RENDER_CORE_TYPE = self.G_TASK_JSON_DICT['system_info'][
                'common']['render_core_type']

        self.G_TIPS_JSON = os.path.normpath(
            os.path.join(self.G_WORK_RENDER_TASK_CFG, 'tips.json'))
        self.G_DRIVERC_7Z = os.path.normpath('d:/7-Zip/7z.exe')

        #-----------------------------------------assert.json-----------------------------------------------
        self.G_ASSET_JSON = os.path.normpath(
            os.path.join(self.G_WORK_RENDER_TASK_CFG, 'asset.json'))
        asset_json = os.path.join(self.G_CONFIG_PATH, 'asset.json')
        if os.path.exists(asset_json):
            CLASS_COMMON_UTIL.python_copy(asset_json,
                                          self.G_WORK_RENDER_TASK_CFG)
            self.G_ASSET_JSON_DICT = eval(
                codecs.open(asset_json, 'r', 'utf-8').read())

        # -----------------------------------------fee-----------------------------------------------
        self.G_FEE_PARSER = configparser.ConfigParser()
        if not self.G_FEE_PARSER.has_section('render'):
            self.G_FEE_PARSER.add_section('render')

        fee_dir = os.path.normpath(
            os.path.join(self.G_WORK, 'fee', self.G_PLATFORM, self.G_MUNU_ID))
        if not os.path.exists(fee_dir):
            os.makedirs(fee_dir)
        fee_filename = r'%s_%s.ini' % (self.G_JOB_ID, self.G_RECOMMIT_FLAG)
        self.G_FEE_FILE = os.path.join(
            fee_dir, fee_filename
        )  #c:/work/fee/<platform>/<munu_task_id>/<munu_job_id>_<resubmit>.ini

        #----------------------------------------------turn global param to str---------------------------------------------------
        global_param_dict = self.__dict__
        for key, value in list(global_param_dict.items()):
            if isinstance(value, bytes):
                exec('self.' + key +
                     ' = CLASS_COMMON_UTIL.bytes_to_str(self.' + key + ')')

        # global_param_dict= self.__dict__
        # for key,value in global_param_dict.items():
        # print type(value)
        # print (key+'='+str(value))

        print('[BASE.init.end.....]')