bek*_*eka 17 ubuntu cron crontab scrapy cron-task
我想从cron job执行我的scrapy crawler.
我创建了bash文件getdata.sh,其中scrapy项目位于它的蜘蛛上
#!/bin/bash
cd /myfolder/crawlers/
scrapy crawl my_spider_name
Run Code Online (Sandbox Code Playgroud)
我的crontab看起来像这样,我想每5分钟执行一次
*/5 * * * * sh /myfolder/crawlers/getdata.sh
Run Code Online (Sandbox Code Playgroud)
但它不起作用,什么是错的,我的错误在哪里?
当我从终端sh /myfolder/crawlers/getdata.sh执行我的bash文件时,它工作正常
bek*_*eka 24
我解决了这个问题,包括PATH到bash文件
#!/bin/bash
cd /myfolder/crawlers/
PATH=$PATH:/usr/local/bin
export PATH
scrapy crawl my_spider_name
Run Code Online (Sandbox Code Playgroud)
添加以下行在crontab -e每天早上5点运行我的scrapy爬行.这是crocs答案的略微修改版本
PATH=/usr/bin
* 5 * * * cd project_folder/project_name/ && scrapy crawl spider_name
Run Code Online (Sandbox Code Playgroud)
没有设置$PATH,cron会给我一个错误"命令未找到:scrapy".我想这是因为/ usr/bin是运行程序的脚本存储在Ubuntu中的地方.
请注意,我的scrapy项目的完整路径是/home/user/project_folder/project_name.我在cron中运行了env命令并注意到工作目录是/home/user.因此我跳过/home/user上面的crontab
调试时,cron日志可能会有所帮助
grep CRON /var/log/syslog
Run Code Online (Sandbox Code Playgroud)
pip3对于使用(或类似)安装的任何人scrapy,这里有一个简单的内联解决方案:
*/10 * * * * cd ~/project/path && ~/.local/bin/scrapy crawl something >> ~/crawl.log 2>&1
Run Code Online (Sandbox Code Playgroud)
代替:
*/10 * * * *用你的 cron 模式
~/project/path以及你的 scrapy 项目的路径(你scrapy.cfg所在的位置)
something与蜘蛛名称(scrapy list在您的项目中使用以找出)
~/crawl.log与您的日志文件位置(如果您想进行日志记录)
| 归档时间: |
|
| 查看次数: |
11404 次 |
| 最近记录: |