Commit 15cea085 authored by shenjunlin's avatar shenjunlin

fix bug

parent 6535928d
......@@ -6,7 +6,7 @@
<version>7</version>
</parent>
<groupId>us.codecraft.duiba</groupId>
<version>0.8.1-SNAPSHOT</version>
<version>0.8.2-SNAPSHOT</version>
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<properties>
......
......@@ -3,7 +3,7 @@
<parent>
<groupId>us.codecraft.duiba</groupId>
<artifactId>webmagic-parent</artifactId>
<version>0.8.1-SNAPSHOT</version>
<version>0.8.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -382,7 +382,7 @@ public class Spider implements Runnable, Task {
try {
((Closeable) object).close();
} catch (IOException e) {
e.printStackTrace();
logger.error(e.getMessage(), e);
}
}
}
......
......@@ -3,7 +3,7 @@
<parent>
<groupId>us.codecraft.duiba</groupId>
<artifactId>webmagic-parent</artifactId>
<version>0.8.1-SNAPSHOT</version>
<version>0.8.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -10,13 +10,16 @@ import us.codecraft.webmagic.Request;
import us.codecraft.webmagic.Task;
import us.codecraft.webmagic.scheduler.component.DuplicateRemover;
import java.io.Closeable;
import java.io.IOException;
/**
* Use Redis as url scheduler for distributed crawlers.<br>
*
* @author code4crafter@gmail.com <br>
* @since 0.2.0
*/
public class RedisScheduler extends DuplicateRemovedScheduler implements MonitorableScheduler, DuplicateRemover {
public class RedisScheduler extends DuplicateRemovedScheduler implements MonitorableScheduler, DuplicateRemover, Closeable {
protected JedisPool pool;
......@@ -26,6 +29,8 @@ public class RedisScheduler extends DuplicateRemovedScheduler implements Monitor
private static final String ITEM_PREFIX = "item_";
private Task task;
public RedisScheduler(String host) {
this(new JedisPool(new JedisPoolConfig(), host));
}
......@@ -47,6 +52,9 @@ public class RedisScheduler extends DuplicateRemovedScheduler implements Monitor
@Override
public boolean isDuplicate(Request request, Task task) {
if (this.task == null) {
this.task = task;
}
Jedis jedis = pool.getResource();
try {
return jedis.sadd(getSetKey(task), request.getUrl()) == 0;
......@@ -153,4 +161,13 @@ public class RedisScheduler extends DuplicateRemovedScheduler implements Monitor
pool.returnResource(jedis);
}
}
@Override
public void close() throws IOException {
if (this.task != null) {
this.resetDuplicateCheck(task);
} else {
logger.error("close redis scheduler error, task is null");
}
}
}
......@@ -3,7 +3,7 @@
<parent>
<groupId>us.codecraft.duiba</groupId>
<artifactId>webmagic-parent</artifactId>
<version>0.8.1-SNAPSHOT</version>
<version>0.8.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -3,7 +3,7 @@
<parent>
<groupId>us.codecraft.duiba</groupId>
<artifactId>webmagic-parent</artifactId>
<version>0.8.1-SNAPSHOT</version>
<version>0.8.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -3,7 +3,7 @@
<parent>
<groupId>us.codecraft.duiba</groupId>
<artifactId>webmagic-parent</artifactId>
<version>0.8.1-SNAPSHOT</version>
<version>0.8.2-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment