cronjob中的Python多线程问题



我有一个使用ThreadPool进行多线程的python程序。该程序是shell脚本中的一个步骤。当我在命令行上手动执行shell脚本时,整个流程按预期工作。但是,当我将shell脚本作为cronjob执行时,似乎在python多线程步骤完全完成之前,流程就进入了下一步。

在python程序中,我调用AsyncResult.get(timeout)来等待所有结果返回,然后再继续。

也通过batch(1)运行程序(参见命令man batch的输出)。如果这可以正常工作,但是cron版本不能,那么几乎可以肯定这是环境变量设置的问题。为了验证这一点,从交互式shell中运行printenv来检查您的环境。然后在crontab中做同样的事情(您只需要为它临时设置一个额外的cron条目)。在调用Python之前,尝试在shell脚本中设置变量。

另一方面,如果它也不能通过batch(1)工作,它可能与您的代码打开的文件有关。尝试运行shell脚本,将输入从/dev/null重定向,输出到一个文件:
$ /usr/local/bin/myscript </dev/null >|/tmp/outfile.txt 2>&1

尝试在您的crontab中设置"TERM=xterm"(或您拥有的任何env变量,在您的终端上通过命令'env'确定)。

最新更新