Python Scrapy爬虫入门 - 使用Crontab实现Scrapy爬虫的定时执行

最近在做Python Scrapy框架搭建数据中心的项目,边做边学,手敲代码,现在spider已经可以采集数据了,但是还没有写定时执行的脚本。根据以前的工作经验,简单的任务可以使用Crontab来实现脚本的定时执行。不过因为工作的变动,而且当时对shell的了解也只是皮毛,还是出了点问题:

crontab -e 添加一个最简单的计划任务:

0 */1 * * * cd /data/spider && scrapy crawl article 

或等价的写法:

0 * * * * cd /data/spider && scrapy crawl article 
‘*/1’等价于‘*’表示每小时执行一次

然后 :wq! 保存退出,然后 service crond redstart 再等一段时间CMD:tail -30 /var/log/cron,查看crontab的日志,发现有执行记录

继续排查服务器的状况,CPU、内存、网络波形图显示日志的执行节点时间并没有大的消耗,数据库中并没有写入内容,表示没有执行成功。

需要说明的是,上面的command部分在CMD下可以正常执行的,CPU开销在4%左右。而crontab的时间设置是没有问题的,那问题就出在command在shell下执行的写法上了。

查阅相关资料看看,原来是 && 后面这段出错了,“scrapy crawl article”在CMD下,并不需要使用scrapy的绝对路径,但是在shell下,这是必须的,修改后的命令如下:

0 */1 * * * cd /data/spider && /usr/local/bin/scrapy crawl article

wq!保存退出,再次重启crontab服务,重复上面的检查,发现执行成功。


总结一下,就是shell下执行非系统命令需要使用绝对路径,看来需要巩固学习一下shell基础了。

你可能感兴趣的:(shell)