在pyspider中用@every设置时间间隔,对于有些project无效,启动一次之后一直没有重启:
@every(seconds=30)
def on_start(self):
self.crawl('http://www.i7wx.com/', callback=self.index_page)
在pyspider中用@every设置时间间隔,对于有些project无效,启动一次之后一直没有重启:
@every(seconds=30)
def on_start(self):
self.crawl('http://www.i7wx.com/', callback=self.index_page)
Pyspider自带去重队列,问题中的写法:self.crawl('http://www.i7wx.com/', callback=self.index_page)
,会默认该task(链接)的age=-1
,表永久去重。
# scheduler.Scheduler源码
default_schedule = {
'priority': 0,
'retries': 3,
'exetime': 0,
'age': -1,
'itag': None,
}
如果你想实现@every
的用法,需要添加添加一个age
参数,指定task(链接)的去重有效时间,且age
参数的值要小于@every
的值。
# 每30秒执行一次on_start方法
@every(seconds=30)
def on_start(self):
self.crawl('http://www.i7wx.com/', callback=self.index_page, age=10)
两种可能:
1 every 会在第一次启动的时候永久生效,后续怎么改都不会起作用,除非删除project重新开一个,或者重启pyspider(不确定会有效)
2 age 时间超过 every