cron作业的python pickle问题



我正在使用python pickle创建一个对象并存储在配置文件中。如果没有cron作业,我可以运行脚本并生成config.pkl。但是,一旦我把它放在cron作业中,我就无法生成config.pkl,但会生成日志"calling generateConfig"。该文件具有执行权限。

下面是函数和cron作业。

def generateConfig():
       print "calling generateConfig"
       configDict = {"test1":"value1","test2":"value2"}
       output = open('config.pkl','wb')
       pickle.dump(configDict, output)
       output.close

crontab:

00 05 * * * /user/bin/python ~/job/process.py

由于您没有为config.pkl提供路径,我猜它会将该文件转储到运行它的用户的主目录中;如果它没有放在那里,试着搜索你的系统。如果没有错误被记录,那么文件很可能在某个地方,只是不是你期望的地方

try/catch中包装任何可能生成异常的东西(例如写文件),并显式地处理或记录问题,这也是一种很好的做法,这样您至少可以控制脚本的执行;在这种情况下,如果您最终尝试pickle资源,那么您的脚本可能会在不关闭该文件句柄的情况下终止。使用'with open(...) as output:是一个不错的选择。

最新更新