Ejemplo n.º 1
0
class Task():
    def __init__(self, name='default-task', logger=None):
        self.tasks = {}
        self.lock = threading.RLock()
        if logger:
            self.LOG = logger
        else:
            self.LOG = MyLogger(name + '.log', clevel=logging.DEBUG)
        self.need_stop = False

    def stop(self):
        self.need_stop = True
        self.LOG.warn('Thread %s stoped!' % (__name__))

    def add_task(self, name, func, run_times=1, interval=5, *argv):
        self.lock.acquire()
        if name and func and int(run_times) >= 1 and int(interval) >= 1:
            pass
        else:
            self.LOG.error("Invalid task: %s, run_times: %d, internal: %d" %
                           (name, int(run_times), int(interval)))
        self.LOG.info("To add task: %s, run_times: %d, internal: %d" %
                      (name, int(run_times), int(interval)))
        self.tasks[name] = {
            'func': func,
            'run_times': int(run_times),
            'interval': int(interval),
            'now_seconds': 0,
            'argv': argv,
            'state': 'active',
            'name': name
        }
        self.lock.release()

    def del_task(self, name):
        self.lock.acquire()
        self.LOG.warn("To delete task:%s" % (name))
        if name in self.tasks:
            del self.tasks[name]
        self.lock.release()

    def show_tasks(self):
        if self.tasks:
            for task in self.tasks:
                self.LOG.info(task + ":")
                for item in sorted(self.tasks[task]):
                    self.LOG.yinfo("    " + item.ljust(20) + ':' +
                                   str(self.tasks[task][item]).rjust(20))
        else:
            self.LOG.warn("No task...")

    def task_proc(self):
        while self.need_stop == False:
            if len(self.tasks) == 0:
                self.LOG.debug("No task!\n")
            '''
            for task in self.tasks:
                if self.tasks[task]['state'] == 'inactive':
                    self.del_task(task)
            '''
            try:
                self.lock.acquire()
                for task in self.tasks:
                    if self.tasks[task]['state'] != 'active':
                        continue
                    self.tasks[task]['now_seconds'] += 1
                    if self.tasks[task]['now_seconds'] >= self.tasks[task][
                            'interval']:
                        if callable(self.tasks[task]['func']):
                            # self.LOG.info("It is time to run %s: " % (
                            #    task) + self.tasks[task]['func'].__name__ + str(self.tasks[task]['argv']))
                            self.tasks[task]['func'](
                                *(self.tasks[task]['argv']))
                        elif callable(eval(self.tasks[task]['func'])):
                            # self.LOG.info("It is time to run %s: " % (
                            #    task) + self.tasks[task]['func'] + str(self.tasks[task]['argv']))
                            eval(self.tasks[task]['func'] + '(*' +
                                 str(self.tasks[task]['argv']) + ')')
                        else:
                            self.LOG.error(
                                "Uncallable task: %s, will disable it!")
                            self.tasks[task]['state'] = 'inactive'
                        self.tasks[task]['now_seconds'] = 0
                        self.tasks[task]['run_times'] -= 1
                        if self.tasks[task]['run_times'] == 0:
                            self.LOG.info("stop task:%s" % (task))
                            self.tasks[task]['state'] = 'inactive'
                    else:
                        pass
                self.lock.release()
                time.sleep(0.1)

            except RuntimeError:
                pass
Ejemplo n.º 2
0
        "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"
    ]

    # get all pics
    all_pics = os.listdir(picpath)
    random.shuffle(all_pics)
    i = 0
    rs = []
    for pic in all_pics * 10:
        if i >= arg_handle.get_args('count'):
            break
        LOG.debug('create info for pic: %s' % pic)
        r = copy.deepcopy(msg)
        with open(picpath + os.path.sep + pic, "rb") as f:
            pic_str = base64.b64encode(f.read()).decode('utf-8')
        pic_type = 'jpeg'
        id = '%04d' % i
        r["name"] = "小狗狗" + id
        r["idenNum"] = "21122319850606" + id
        r["phone"] = "1888885" + id
        r["fileName"] = r["name"] + '.jpg'
        r["facePicBase64"] = "data:image/" + \
            pic_type + ';base64,' + pic_str
        r["fingerCode1"] = fingerCode_list[random.randint(
            0, len(fingerCode_list) - 1)]
        i += 1
        rs.append(r)