python中的Google电子表格读取脚本不是从cron计划运行,但是当我运行它时可以运行shell命令

时间:2019-04-04 07:58:21

标签: python ubuntu cron

我正在使用python脚本从Google电子表格中读取数据,当我使用shell命令运行时,脚本运行正常,但是在cron上安排脚本时却无法正常工作。

到目前为止我已经完成的检查清单

  1. 与文件名和位置有关的文件,没有问题
  2. 通过使用tail -f /var/log/syslog | grep CRON这个命令,我已经看到计划是按时触发的

  3. 我已将脚本方法添加到另一个脚本中,该脚本在cron上运行良好,但在cron运行时仍然无法使用

cron声明

/home/ubuntu/.virtualenvs/python_3.5/bin/python /location/script_name.py

还有其他方法可以检查为什么它不能从cron计划中运行,但可以从shell命令中正常运行。

1 个答案:

答案 0 :(得分:1)

从@stovfl获得建议后,我在此行中添加了>> /tmp/cron.log 2>&1

/home/ubuntu/.virtualenvs/python_3.5/bin/python /location/script_name.py  >> /tmp/cron.log 2>&1

使用我的cron语句并检查日志文件,我发现我没有使用用于json身份验证文件的显式路径,尽管它位于项目文件夹中,所以使用shell命令运行它的时间很好。如下所示使用了代码

credentials = ServiceAccountCredentials.from_json_keyfile_name('file_name.json')

,因此当cron发射该脚本时,它无法获取认证文件的位置,因此无法运行。 然后我像下面一样改变

credentials = ServiceAccountCredentials.from_json_keyfile_name('location_of_file/file_name.json')

现在它像cron和shell命令中的符咒一样工作