Я пытаюсь запустить .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'
Это работает, когда вы запускаете его вручную, потому что вы, вероятно, запускаете его из каталога, содержащего файл 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)