Crontab работает неправильно с .py

Я пытаюсь запустить .py с crontab каждую минуту, но он не работает.

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)

Path;

/home/TwitterFollowBot/bot.py

Crontab log;

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'
3
задан 27 November 2016 в 03:16

1 ответ

Это работает, когда вы запускаете его вручную, потому что вы, вероятно, запускаете его из каталога, содержащего файл config.txt. Ваш crontab будет запущен из домашнего каталога пользователя, чей это crontab. Итак, если вы запустили crontab -e как пользователя foo, он будет искать /home/foo/config.txt.

Самое простое решение - использовать полный путь в скрипте Python:

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

Кроме того, ваш скрипт выглядит довольно странно. Почему так много импорта? Зачем заново инициализировать бот? Я не могу это проверить, но вы уверены, что не хотите просто:

#!/usr/bin/env python

from TwitterFollowBot import TwitterBot
my_bot = TwitterBot("config.txt")  
my_bot.sync_follows()
my_bot.auto_rt("@ShoutGamers", count=2200)
0
ответ дан 27 November 2016 в 03:16

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

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