Tente adicionar esta linha antes de tudo no seu crontab:
PATH=/usr/bin/:/bin
Eu tenho um script python main.py
, que lê meu tweet mais recente usando tweepy.
Eu criei um script de shell looplauncher.sh, que chama este script python:
cd /
cd home/pi/LCDinterface
sudo python main.py &
cd /
Se eu executar python main.py
ou sh looplauncher.sh
com ou sem sudo, meu programa será executado corretamente. Eu colei esta linha no cron: usando sudo crontab -e
*/2 * * * * sleep 60 && sudo sh /home/pi/LCDinterface/looplauncher.sh >/home/pi/logs/loopcronlog 2>&1
O script python realmente é executado a cada 2 minutos (eu vejo isso dos logs). Mas eu nunca consigo pegar meu tweet, Se eu rodar main.py manualmente eu sempre recebo meu tweet. Eu tentei muita combinação de sudo / no sudo, adicionado atraso para dar tempo para a conexão. Mas nada funciona até agora. Você pode me ajudar com isso? (Eu estou fazendo isso em um Raspberry Pi 3)
Recebi erros como este, quando o cron é executado:
Traceback (most recent call last):
File "main.py", line 49, in <module>
main()
File "main.py", line 32, in main
tweet = getTweet('RaspProject')
File "/home/pi/LCDinterface/twitterHelper.py", line 20, in getTweet
print (tweet._json['text'])
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 32: ordinal not in range(128)
Executar manualmente os scripts funciona bem. (Embora eu realmente tenha algumas cartas húngaras especiais lá, como éőóű
Tente adicionar esta linha antes de tudo no seu crontab:
PATH=/usr/bin/:/bin
Tags cron python raspbian raspberry-pi