@@ -43,7 +43,6 @@ def __init__(
4343 delete_keys = (),
4444 keep_alive = None ,
4545 auto_start_requests = None ,
46- send_run_time = True ,
4746 batch_interval = 0 ,
4847 wait_lock = True ,
4948 task_table = None ,
@@ -59,7 +58,6 @@ def __init__(
5958 @param delete_keys: 爬虫启动时删除的key,类型: 元组/bool/string。 支持正则
6059 @param keep_alive: 爬虫是否常驻,默认否
6160 @param auto_start_requests: 爬虫是否自动添加任务
62- @param send_run_time: 发送运行时间
6361 @param batch_interval: 抓取时间间隔 默认为0 天为单位 多次启动时,只有当前时间与第一次抓取结束的时间间隔大于指定的时间间隔时,爬虫才启动
6462 @param wait_lock: 下发任务时否等待锁,若不等待锁,可能会存在多进程同时在下发一样的任务,因此分布式环境下请将该值设置True
6563 @param task_table: 任务表, 批次爬虫传递
@@ -105,7 +103,6 @@ def __init__(
105103 if auto_start_requests is not None
106104 else setting .SPIDER_AUTO_START_REQUESTS
107105 )
108- self ._send_run_time = send_run_time
109106 self ._batch_interval = batch_interval
110107
111108 self ._begin_callback = (
@@ -394,10 +391,10 @@ def check_task_status(self):
394391 self .send_msg (
395392 msg ,
396393 level = "error" ,
397- message_prefix = "《%s》爬虫当前失败任务数预警 " % (self ._spider_name ),
394+ message_prefix = "《%s》爬虫当前失败任务数报警 " % (self ._spider_name ),
398395 )
399396
400- # parser_control实时统计已做任务数及失败任务数,若失败数大于10且失败任务数/已做任务数>= 0.5 则报警
397+ # parser_control实时统计已做任务数及失败任务数,若成功率< 0.5 则报警
401398 failed_task_count , success_task_count = PaserControl .get_task_status_count ()
402399 total_count = success_task_count + failed_task_count
403400 if total_count > 0 :
@@ -411,13 +408,22 @@ def check_task_status(self):
411408 task_success_rate ,
412409 )
413410 log .error (msg )
414- # 统计下上次发消息的时间,若时间大于1小时,则报警(此处为多进程,需要考虑别报重复)
415411 self .send_msg (
416412 msg ,
417413 level = "error" ,
418- message_prefix = "《%s》爬虫当前任务成功率 " % (self ._spider_name ),
414+ message_prefix = "《%s》爬虫当前任务成功率报警 " % (self ._spider_name ),
419415 )
420416
417+ # 检查入库失败次数
418+ if self ._item_buffer .export_falied_times > setting .EXPORT_DATA_MAX_FAILED_TIMES :
419+ msg = "《{}》爬虫导出数据失败,失败次数:{}, 请检查爬虫是否正常" .format (
420+ self ._spider_name , self ._item_buffer .export_falied_times
421+ )
422+ log .error (msg )
423+ self .send_msg (
424+ msg , level = "error" , message_prefix = "《%s》爬虫导出数据失败" % (self ._spider_name )
425+ )
426+
421427 def delete_tables (self , delete_tables_list ):
422428 if isinstance (delete_tables_list , bool ):
423429 delete_tables_list = [self ._redis_key + "*" ]
@@ -447,22 +453,7 @@ def _stop_all_thread(self):
447453
448454 def send_msg (self , msg , level = "debug" , message_prefix = "" ):
449455 # log.debug("发送报警 level:{} msg{}".format(level, msg))
450- if setting .WARNING_LEVEL == "ERROR" :
451- if level != "error" :
452- return
453-
454- if setting .DINGDING_WARNING_URL :
455- keyword = "feapder报警系统\n "
456- tools .dingding_warning (keyword + msg , message_prefix = message_prefix )
457-
458- if setting .EMAIL_RECEIVER :
459- tools .email_warning (
460- msg , message_prefix = message_prefix , title = self ._spider_name
461- )
462-
463- if setting .WECHAT_WARNING_URL :
464- keyword = "feapder报警系统\n "
465- tools .wechat_warning (keyword + msg , message_prefix = message_prefix )
456+ tools .send_msg (msg = msg , level = level , message_prefix = message_prefix )
466457
467458 def spider_begin (self ):
468459 """
@@ -524,8 +515,7 @@ def spider_end(self):
524515 )
525516 log .info (msg )
526517
527- if self ._send_run_time :
528- self .send_msg (msg )
518+ self .send_msg (msg )
529519
530520 if self ._keep_alive :
531521 log .info ("爬虫不自动结束, 等待下一轮任务..." )
0 commit comments