コード例 #1
0
 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)
コード例 #2
0
ファイル: tools.py プロジェクト: leonhaft/AiSpider
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
コード例 #3
0
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))