Cron 作业已执行,但未在目标数据库中显示任何结果

Cron 作业已执行,但未在目标数据库中显示任何结果

我有一个在 Linux(Ubuntu)机器上每 10 分钟运行一次的 Cron 作业。

*/10 * * * * /home/dbase/Salesforce/InsertJob1

当我这样做时grep CRON /var/log/syslog,它会显示每 10 分钟运行一次的此 Cron 作业(InsertJob1)的所有记录。

但是,当我查看数据库端(Salesforce)的结果时,没有执行任何操作(没有插入)。

在目标端(Salesforce 数据库),我看不到此 SOAP API 的任何登录历史记录。

但是,当我使用 IDE(PyCharm)手动执行此 Python 文件时,它运行良好,并且数据会插入到 Salesforce 数据库中。

我的问题是:

  1. 我是否必须修改 crontab 以使其显示为InsertJob1而不是InsertJob1.py

  2. 我必须创建一个关联而不是将文件保留为InsertJob1.py或不保留扩展名,如InsertJob1

  3. 除了将 Python 文件留在我在 Cron 上指向的文件夹位置之外,我还有什么其他任务?

答案1

你的 cron 中有一个错误:

*/10 * * * * /home/dbase/Salesforce/InsertJob1

应该

*/10 * * * * /path/to/env/bin/python /home/dbase/Salesforce/InsertJob1.py

当你在虚拟环境中从终端运行代码时(如果你没有使用虚拟环境,你应该考虑一下),你可以这样运行它:

python script.py

cron 的运行方式大致相同,只是您应该指定已安装适当包的 python 可执行文件的路径。

一般来说,在记录 cron 作业时,您应该将一些输出写入日志文件,以告诉您 cron 的相应部分是否已运行。只需在正确的位置添加几个 print(),或使用脚本的 python 日志记录模块。

相关内容