O Crontab não está funcionando corretamente com o .py

3

Estou tentando executar um .py com crontab a cada minuto, mas não está funcionando.

Crontab;

MAILTO="" 
*/1 * * * * /home/TwitterFollowBot/bot.py

Bot.py

#!/usr/bin/env python

from TwitterFollowBot import TwitterBot
my_bot = TwitterBot()

from TwitterFollowBot import TwitterBot
my_bot = TwitterBot("config.txt")  

from TwitterFollowBot import TwitterBot   
my_bot = TwitterBot()
my_bot.sync_follows()

from TwitterFollowBot import TwitterBot    
my_bot = TwitterBot()
my_bot.auto_rt("@ShoutGamers", count=2200)

Caminho;

/home/TwitterFollowBot/bot.py

Log do Crontab;

Traceback (most recent call last):
  File "/home/TwitterFollowBot/bot.py", line 5, in <module>
    my_bot = TwitterBot()
  File "/home/TwitterFollowBot/TwitterFollowBot/__init__.py", line 42, in __init__
    self.bot_setup(config_file)
  File "/home/TwitterFollowBot/TwitterFollowBot/__init__.py", line 78, in bot_setup
    with open(config_file, "r") as in_file:
IOError: [Errno 2] No such file or directory: 'config.txt'
    
por Isuru Nuwan Subasinghe 26.11.2016 / 08:35

1 resposta

4

Funciona quando você o executa manualmente porque provavelmente o está executando a partir do diretório que contém o arquivo config.txt . Seu crontab será executado a partir do diretório inicial do usuário cujo crontab é. Então, se você executou crontab -e como o usuário foo , ele estará procurando por /home/foo/config.txt .

A correção mais simples seria usar o caminho completo no seu script python:

my_bot = TwitterBot("/home/foo/config.txt")  

Além disso, o seu script parece meio estranho. Por que tantas importações? Por que reiniciar o bot tantas vezes? Eu não posso testar, mas você tem certeza de que não quer apenas:

#!/usr/bin/env python

from TwitterFollowBot import TwitterBot
my_bot = TwitterBot("config.txt")  
my_bot.sync_follows()
my_bot.auto_rt("@ShoutGamers", count=2200)
    
por terdon 26.11.2016 / 16:29

Tags