【发布时间】:2014-07-10 20:39:52
【问题描述】:
我已经经历了多个线程,但我似乎仍然找不到我的问题。
我正在构建一个非常简单的 Twitter 机器人,我希望它每小时启动一次,每小时执行一次来自 Raspberry Pi 的 cron 作业。这是我的 crontab:
PYTHONPATH=/usr/bin/python
MAILTO=*myemail*
00 * * * * /home/username/directory/my_script.py >> /var/log/cron.log
然后是脚本:
#! /usr/bin/env python
import sys
from twython import Twython, TwythonError
from pymarkovchain import MarkovChain
#TWITTER ACCESS
apiKey = KEY
apiSecret = SECRET
accessToken = TOKEN
accessKey = KEY
#text to pull
text = open('/home/username/directory/text.txt').read()
#Generate database and frequency table
mc = MarkovChain('/home/username/directory/markov')
mc.generateDatabase(text)
tweet = mc.generateString()
api = Twython(apiKey,apiSecret,accessToken,accessKey)
try:
api.update_status(status=tweet)
except TwythonError as e:
print e
我检查的第一件事是所有引用的文件,以确保它们是绝对引用。然后,我检查以确保我的文件路径正确。我真的很难过。从命令行使用完整路径运行脚本按预期工作。任何想法表示赞赏。
【问题讨论】:
-
首先,你的shebang坏了。其次,您所说的“失败”/“不起作用”是什么意思?
-
哦,那是一个错字。我仔细检查了我的脚本,那里没问题。是的,cron 工作并没有按应有的方式发布推文。据我所知,日志也没有显示任何错误。
-
PYTHONPATH绝对应该不是/usr/bin/python,尽管我怀疑这是你的问题。 -
/var/log/cron.log是否存在? cron 作业是否以有权写入该文件的用户身份运行? -
嗯,您目前只是将 STDOUT 重定向到日志 - 我不希望有任何回溯。尝试
my_script.py &>> /var/log/cron.log也将 STDERR 重定向到日志。