web-dev-qa-db-ja.com

Crontabが.pyで正しく実行されていません

私は毎分crontabで.pyを実行しようとしていますが、うまくいきません。

クロンタブ;

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)

道;

/home/TwitterFollowBot/bot.py

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'

おそらくconfig.txtファイルを含むディレクトリから実行しているため、手動で実行すると機能します。 crontabは、crontabを所有するユーザーのホームディレクトリから実行されます。したがって、ユーザーfooとしてcrontab -eを実行すると、/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)
4
terdon