def start_check(self, ips, website_name): if ips: # 检测 for _ip in ips: for target_url in self.target_urls: url = target_url # 调用format_put_data 构造放入队列中的数据 put_data = format_put_data(args={ "url": url, 'ip': _ip, 'time_out': 5 }, work_func=valid, need_save=True, save_func=self.save_ip, meta={ 'website_name': website_name, 'target_url': target_url }) # 放入队列 work_queue.put(put_data) else: msg = 'There Are No Available From [{website_name}] Can Be Used To Check, Please Check!!!!!!!'.format( website_name=website_name) logger.error(msg)
def format_put_data(args, work_func, dont_filter=False, follow_func=None, tag=None, need_save=True, save_func=None, meta=None): put_data = { 'args': args, 'work_func': work_func, 'follow_func': follow_func, 'dont_filter': dont_filter, 'tag': tag, 'need_save': need_save, 'save_func': save_func, 'meta': meta } # args if not isinstance(args, dict) or not args: msg = 'IN [put_data], args has to be dict and can not be empty, please check, exiting......' logger.error( format_error_msg(inspect.stack()[1][1], inspect.stack()[1][3], msg)) os._exit(0) elif 'url' not in list(args.keys()): msg = 'IN [put_data], url has to be a key in args and can not be modified ,please check, exiting......' logger.error( format_error_msg(inspect.stack()[1][1], inspect.stack()[1][3], msg)) os._exit(0) # work_func if work_func is None or not callable(work_func): msg = 'IN [put_data], work_func has to be defined and must be callable ,please check, exiting......' logger.error( format_error_msg(inspect.stack()[1][1], inspect.stack()[1][3], msg)) os._exit(0) # meta if meta and not isinstance(meta, dict): msg = 'meta has to be dict while you defined it ,please check, exiting......' logger.error( format_error_msg(inspect.stack()[1][1], inspect.stack()[1][3], msg)) os._exit(0) # save_func if save_func and not callable(save_func): msg = 'IN [put_data], save has to be callable while you define it ,please check, exiting......' logger.error( format_error_msg(inspect.stack()[1][1], inspect.stack()[1][3], msg)) os._exit(0) return put_data
def handle_thread_exception(func, _dict): try: func(_dict) except Exception, e: msg = 'ERROR INFO in {func}: {e}'.format(func=func, e=e) logger.error( tools.format_error_msg(inspect.stack()[1][1], inspect.stack()[1][3], msg))