if redo_info is not None: zk_redo = ZkRedo(redo_info, process_id, input_path, output_path, bak_path) filename_pool_str = zk_redo.do_task() file_date, prov, zk_seq = filename_pool_str.split(",") my_flow.work(file_date, zk_seq, prov, filename_part) while 1: redo_info = [] current_time = datetime.datetime.now().strftime('%Y%m%d-%H-%M-%S') merge_date, hh, mi, ss = current_time.split('-') # 获取当前系统序号 sequence = (int(hh) * 3600 + int(mi) * 60 + int(ss)) / merge_interval - 1 sequence = '%03d' % int(sequence) sys_sequence = merge_date + str(sequence) logging.info('get system sequence:%s' % sys_sequence) filename_seq = zoo.zk_get_merge_fn(process_path, work_node, sys_sequence, zk_filenamepool) if filename_seq == 0: # zk_seq > cur_seq,未到合并时间点 time.sleep(10) continue if filename_seq == 1: logging.info("get filename_pool failed, try again") continue file_date, zk_seq, prov = filename_seq.split(".") filename_pool = ",".join([file_date, zk_seq, prov]) redo_info.append("filenamepool:" + filename_pool) # zoo.create_node(redo_node) # zoo.set_node_value(redo_node, ";".join(redo_info).encode("utf-8")) logging.info("match expr:%s" % (match_expr + prov)) my_flow.get_file(match_expr + prov)