Ошибка при установке scrapy в качестве задания cron: «scrapy: not found»

Я хочу установить 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:00 (14:00 по местному времени), поэтому не знаете, почему тоже не регистрируется ошибка?

Примечание: /home/ubuntu/.local/bin/ - это то место, где scrapy (я нашел это с помощью команды which scrapy )

update (проблема с часовым поясом)

Причина, по которой я не получал никакой ошибки, заключалась в том, что мой часовой пояс был неправильным после исправления часового пояса , Я получаю следующую ошибку:

scrapy: not found

Я также пробовал использовать 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

Я тестировал запуск указанного выше сценария оболочки с консоли, и он работает, затем я добавил это как задание cron, но результат тот же:

sudo crontab -e

добавил следующее:

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

Но по-прежнему получаю scrapy: not found error.

1
задан 20 July 2020 в 00:40

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 
0
ответ дан 30 July 2020 в 22:08

in newscript.sh
#!/bin/bash
su - ubuntu OR set PATH= if necessary... since you made the cronjob as sudo
cd /home/ubuntu/scrapers/my_scraper/
scrapy crawl my_spider

the part you said worked already ^

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

...bottom line, make a working script, call the script in the cron job... make sure it's executable.

1
ответ дан 30 July 2020 в 22:08

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

maybe try to get rid of the cd command.

1
ответ дан 30 July 2020 в 22:08

Другие вопросы по тегам:

Похожие вопросы: