pyspider @every时间设置无效

发布于 2022-09-05 10:20:00 字数 316 浏览 12 评论 0

在pyspider中用@every设置时间间隔,对于有些project无效,启动一次之后一直没有重启:

@every(seconds=30)
def on_start(self):
    self.crawl('http://www.i7wx.com/', callback=self.index_page)

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

人疚 2022-09-12 10:20:00

两种可能:
1 every 会在第一次启动的时候永久生效,后续怎么改都不会起作用,除非删除project重新开一个,或者重启pyspider(不确定会有效)
2 age 时间超过 every

自控 2022-09-12 10:20:00

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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文