You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何最佳调度Scrapy爬虫?需每分钟运行,寻求替代Celery的方案

调度Scrapy爬虫的实用方案

1. 系统定时任务(Cron/Windows任务计划)+ scrapy crawl命令

这是最稳定且无额外依赖的方案,适合大多数场景:

  • Linux/macOS:执行crontab -e编辑定时任务表,添加一行:
    * * * * * cd /你的Scrapy项目绝对路径 && scrapy crawl 你的爬虫名称
    
    * * * * *代表每分钟执行一次,替换路径和爬虫名即可。
  • Windows:打开「任务计划程序」创建基本任务,触发频率设为每分钟,操作选择「启动程序」,程序路径填python.exe或scrapy.exe的完整路径,参数填crawl 你的爬虫名称,起始目录设为Scrapy项目根目录。

2. Scrapyd + Scrapyd-Cron

如果需要爬虫管理、监控、启停等功能,用这套组合更合适:

  • 先安装依赖:
    pip install scrapyd scrapyd-cron
    
  • 启动Scrapyd服务后,在scrapyd.conf配置文件的[cron]区块添加定时规则:
    你的爬虫名称 = * * * * *
    
    或者通过API提交任务:
    curl http://localhost:6800/cron/add.json -d project=你的项目名 -d spider=你的爬虫名称 -d schedule="* * * * *"
    

3. APScheduler 集成Python脚本

需要自定义调度逻辑(比如结合业务代码)时用这个方案:

  • 安装APScheduler:
    pip install apscheduler
    
  • 编写调度脚本(示例schedule_spider.py):
    from apscheduler.schedulers.blocking import BlockingScheduler
    from scrapy.crawler import CrawlerProcess
    from scrapy.utils.project import get_project_settings
    
    def run_spider():
        process = CrawlerProcess(get_project_settings())
        process.crawl('你的爬虫名称')
        process.start()
    
    if __name__ == '__main__':
        scheduler = BlockingScheduler()
        scheduler.add_job(run_spider, 'cron', minute='*')
        scheduler.start()
    
    直接运行脚本即可,注意长期运行时需处理进程重启问题。

方案对比

  • 系统定时任务:简单稳定,无额外依赖,缺点是缺乏爬虫状态监控。
  • Scrapyd+Scrapyd-Cron:自带监控、API和爬虫管理功能,适合生产环境多爬虫场景。
  • APScheduler:灵活性高,适合需要结合业务逻辑自定义调度的场景。

内容的提问来源于stack exchange,提问作者Zakhar Malinouski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 02:01:57