cronjob中的python多线程问题

时间:2011-07-20 18:33:42

标签: python multithreading cron threadpool

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

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

2 个答案:

答案 0 :(得分:0)

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

另一方面,如果它也不能通过batch(1)工作,则可能与您的代码已打开的文件有关。尝试使用从/ dev / null重定向的输入运行shell脚本并输出到文件:

$ /usr/local/bin/myscript </dev/null >|/tmp/outfile.txt 2>&1

答案 1 :(得分:0)

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