将 scrapy 设置为 cron 作业时出错:“scrapy:未找到”

将 scrapy 设置为 cron 作业时出错:“scrapy:未找到”

我想设置一个 cron 作业来运行我的 scrapy(python 脚本)

这就是我运行脚本的方法,并且它运行良好:

ubuntu@ip-1-2-3-4-:cd /home/ubuntu/scrapers/my_scraper/
ubuntu@ip-1-2-3-4-:~/scrapers/my_scraper$ scrapy crawl my_spider

现在我尝试将上述命令作为 cron 作业运行:

sudo crontab -e

添加了以下几行:

PATH=/home/ubuntu/.local/bin/
35 14 * * * cd /home/ubuntu/scrapers/my_scraper && scrapy crawl my_spider

这并不成功...我也无法诊断问题......如果我运行:

grep CRON /var/log/syslog

我得到以下输出:

Jul 12 06:47:01 ip-1-2-3-4 CRON[1451]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))
Jul 12 07:17:01 ip-1-2-3-4 CRON[1825]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 08:17:01 ip-1-2-3-4 CRON[1836]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 09:17:01 ip-1-2-3-4 CRON[1849]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 10:17:01 ip-1-2-3-4 CRON[1861]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 11:17:01 ip-1-2-3-4 CRON[1869]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 12:17:01 ip-1-2-3-4 CRON[1878]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 13:17:01 ip-1-2-3-4 CRON[1887]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 14:17:01 ip-1-2-3-4 CRON[1962]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 15:17:01 ip-1-2-3-4 CRON[1970]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 16:17:01 ip-1-2-3-4 CRON[1982]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 17:17:01 ip-1-2-3-4 CRON[1991]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 18:17:01 ip-1-2-3-4 CRON[2002]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 19:17:01 ip-1-2-3-4 CRON[2010]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 20:05:01 ip-1-2-3-4 CRON[2018]: (root) CMD (   test -x /etc/cron.daily/popularity-contest && /etc/cron.daily/popularity-contest --crond)
Jul 12 20:17:01 ip-1-2-3-4 CRON[2022]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 21:17:01 ip-1-2-3-4 CRON[2031]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 22:17:01 ip-1-2-3-4 CRON[2039]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 12 23:17:01 ip-1-2-3-4 CRON[2047]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 13 00:17:01 ip-1-2-3-4 CRON[2156]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 13 01:17:01 ip-1-2-3-4 CRON[2465]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 13 02:17:01 ip-1-2-3-4 CRON[2549]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 13 03:17:01 ip-1-2-3-4 CRON[2980]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Jul 13 04:17:01 ip-1-2-3-4 CRON[3033]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

这很奇怪,因为最近的一行是今天早上 4 点(当地时间是下午 2 点)的,所以不确定为什么没有记录任何错误?

注意:/home/ubuntu/.local/bin/是 scrapy 所在的位置(我使用命令找到它which scrapy

更新(时区问题)

我没有收到任何错误的原因是我的时区错误,修复时区后,我收到以下错误:

scrapy:未找到

我也尝试使用 run-my-scraper.sh:

#!/bin/bash

cd /home/ubuntu/scrapers/my_scraper
PATH=$PATH:/usr/bin/python3
export PATH
/home/ubuntu/.local/bin/scrapy crawl my_spider

我测试了从控制台运行上述 shell 脚本并且它可以运行,然后我将其添加为 cron 作业,但结果仍然是相同的:

sudo crontab -e

添加了以下内容:

39 16 * * * ./home/ubuntu/scrapers/shell-scripts/run-my-scraper.sh

但仍然scrapy:未找到错误。

答案1

35 14 * * * cd /home/ubuntu/scrapers/my_scraper && scrapy crawl my_spider

也许尝试摆脱光盘命令。

答案2

在 newscript.sh 中
#!/bin/bash
su-ubuntu或者如果必要的话,设置 PATH=...因为你将 cronjob 设置为 sudo
cd /home/ubuntu/scrapers/my_scraper/
scrapy crawl my_spider

你说的部分已经起作用了 ^

在 crontab
35 14 * * * /home/blahblah/newscript.sh

...底线是,制作一个工作脚本,在 cron 作业中调用该脚本...确保它是可执行的。

答案3

我的时区有问题...我的服务器设置为 UTC,并且我使用澳大利亚时间设置 cron 作业,这就是我看不到任何错误消息的原因。

修复时区后,以下操作对我有用(感谢@Stephen Boston 的评论,他指出我需要使用 scrapy 的完整路径):

crontab -e

PATH=/usr/local/bin
56 18 * * * cd /home/ubuntu/scrapers/my_scraper && /home/ubuntu/.local/bin/scrapy crawl my_spider 

相关内容