2011-07-20 82 views
3

我有一個python程序,使用ThreadPool多線程。該程序是shell腳本中的一個步驟。當我在命令行上手動執行shell腳本時,整個流程按預期工作。但是,當我以cronjob的身份執行shell腳本時,似乎流程會在python多線程步驟完成之前進入下一步。python多線程問題在cronjob

在python程序裏面,我調用AsyncResult.get(timeout)來等待所有的結果在繼續之前回來。

+0

你能發佈你的cronjob嗎?另外,您的意思是「該計劃是一步嗎?」 – hymloth

+0

這是一個shell腳本中的一個命令。 – agf

+0

看看這個:http://stackoverflow.com/questions/5455425/django-python-how-should-this-cronjob-be-executed/5456321#5456321 – hymloth

回答

0

通過batch(1)運行您的程序(請參閱命令man batch的輸出)。如果這樣可行,但cron版本不行,那麼它幾乎肯定是你的環境變量設置的問題。要驗證這一點,請從交互式shell運行printenv以檢查您的環境。然後在crontab中做同樣的事情(你只需要暫時爲它設置一個額外的cron條目)。嘗試在調用Python之前在shell腳本中設置變量。

另一方面,如果它不能通過batch(1)工作,它可能與您的代碼打開的文件有關。嘗試使用從/ dev/null重定向的輸入運行shell腳本,並輸出到文件: