From 375e64e84521366dabbf1cc5bc08828dd25b8a81 Mon Sep 17 00:00:00 2001 From: "yihua.huang" Date: Fri, 25 Apr 2014 18:10:14 +0800 Subject: [PATCH] more monitor status --- .../src/main/java/us/codecraft/webmagic/Spider.java | 12 ++++++++---- .../us/codecraft/webmagic/monitor/SpiderStatus.java | 12 ++++++++++++ .../webmagic/monitor/SpiderStatusMXBean.java | 5 +++++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/webmagic-core/src/main/java/us/codecraft/webmagic/Spider.java b/webmagic-core/src/main/java/us/codecraft/webmagic/Spider.java index 0d7d5be..5016724 100644 --- a/webmagic-core/src/main/java/us/codecraft/webmagic/Spider.java +++ b/webmagic-core/src/main/java/us/codecraft/webmagic/Spider.java @@ -18,10 +18,7 @@ import us.codecraft.webmagic.utils.UrlUtils; import java.io.Closeable; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.UUID; +import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; @@ -103,6 +100,8 @@ public class Spider implements Runnable, Task { private final AtomicLong pageCount = new AtomicLong(0); + private Date startTime; + /** * create a spider with pageProcessor. * @@ -288,6 +287,7 @@ public class Spider implements Runnable, Task { } startRequests.clear(); } + startTime = new Date(); } @Override @@ -685,6 +685,10 @@ public class Spider implements Runnable, Task { return this; } + public Date getStartTime() { + return startTime; + } + public Scheduler getScheduler() { return scheduler; } diff --git a/webmagic-extension/src/main/java/us/codecraft/webmagic/monitor/SpiderStatus.java b/webmagic-extension/src/main/java/us/codecraft/webmagic/monitor/SpiderStatus.java index af08526..a87c040 100644 --- a/webmagic-extension/src/main/java/us/codecraft/webmagic/monitor/SpiderStatus.java +++ b/webmagic-extension/src/main/java/us/codecraft/webmagic/monitor/SpiderStatus.java @@ -5,6 +5,7 @@ import org.slf4j.LoggerFactory; import us.codecraft.webmagic.Spider; import us.codecraft.webmagic.scheduler.MonitorableScheduler; +import java.util.Date; import java.util.List; /** @@ -76,4 +77,15 @@ public class SpiderStatus implements SpiderStatusMXBean { spider.stop(); } + @Override + public Date getStartTime() { + return spider.getStartTime(); + } + + @Override + public int getPagePerSecond() { + int runSeconds = (int) (System.currentTimeMillis() - getStartTime().getTime()) / 1000; + return getSuccessPageCount() / runSeconds; + } + } diff --git a/webmagic-extension/src/main/java/us/codecraft/webmagic/monitor/SpiderStatusMXBean.java b/webmagic-extension/src/main/java/us/codecraft/webmagic/monitor/SpiderStatusMXBean.java index cc0f040..e49ff8f 100644 --- a/webmagic-extension/src/main/java/us/codecraft/webmagic/monitor/SpiderStatusMXBean.java +++ b/webmagic-extension/src/main/java/us/codecraft/webmagic/monitor/SpiderStatusMXBean.java @@ -1,5 +1,6 @@ package us.codecraft.webmagic.monitor; +import java.util.Date; import java.util.List; /** @@ -27,4 +28,8 @@ public interface SpiderStatusMXBean { public void start(); public void stop(); + + public Date getStartTime(); + + public int getPagePerSecond(); }