|
24 | 24 | from feapder.network.request import Request |
25 | 25 | from feapder.utils.log import log |
26 | 26 | from feapder.utils.redis_lock import RedisLock |
| 27 | +from feapder.utils import metrics |
27 | 28 |
|
28 | 29 | SPIDER_START_TIME_KEY = "spider_start_time" |
29 | 30 | SPIDER_END_TIME_KEY = "spider_end_time" |
@@ -144,6 +145,14 @@ def __init__( |
144 | 145 | self._last_check_task_status_time = 0 |
145 | 146 | self.wait_lock = wait_lock |
146 | 147 |
|
| 148 | + self.init_metrics() |
| 149 | + |
| 150 | + def init_metrics(self): |
| 151 | + """ |
| 152 | + 初始化打点系统 |
| 153 | + """ |
| 154 | + metrics.init(**setting.METRICS_OTHER_ARGS) |
| 155 | + |
147 | 156 | def add_parser(self, parser): |
148 | 157 | parser = parser() # parser 实例化 |
149 | 158 | if isinstance(parser, BaseParser): |
@@ -473,19 +482,26 @@ def spider_begin(self): |
473 | 482 | # 发送消息 |
474 | 483 | self.send_msg("《%s》爬虫开始" % self._spider_name) |
475 | 484 |
|
476 | | - def spider_end(self): |
| 485 | + def spider_end(self, close=True): |
477 | 486 | self.record_end_time() |
478 | 487 |
|
479 | 488 | if self._end_callback: |
480 | 489 | self._end_callback() |
481 | 490 |
|
482 | 491 | for parser in self._parsers: |
483 | | - parser.close() |
| 492 | + if close: |
| 493 | + parser.close() |
484 | 494 | parser.end_callback() |
485 | 495 |
|
486 | | - # 关闭webdirver |
487 | | - if Request.webdriver_pool: |
488 | | - Request.webdriver_pool.close() |
| 496 | + if close: |
| 497 | + # 关闭webdirver |
| 498 | + if Request.webdriver_pool: |
| 499 | + Request.webdriver_pool.close() |
| 500 | + |
| 501 | + # 关闭打点 |
| 502 | + metrics.close() |
| 503 | + else: |
| 504 | + metrics.flush() |
489 | 505 |
|
490 | 506 | # 计算抓取时长 |
491 | 507 | data = self._redisdb.hget( |
@@ -552,3 +568,12 @@ def record_spider_state( |
552 | 568 | batch_interval=None, |
553 | 569 | ): |
554 | 570 | pass |
| 571 | + |
| 572 | + def join(self, timeout=None): |
| 573 | + """ |
| 574 | + 重写线程的join |
| 575 | + """ |
| 576 | + if not self._started.is_set(): |
| 577 | + return |
| 578 | + |
| 579 | + super().join() |
0 commit comments