2011-08-12 122 views
3

我的django項目使用「at」調度程序在預定時間調用python文件。這是在我的models.pyDjango Apache - 以腳本運行腳本

command = 'echo "python /path/to/script.py params" | /usr/bin/at -t [time] &> path/to/at.log' 
status = os.system(command) 

其中[時間]是日程安排時間。 當我在Django Dev服務器中運行它時,它完美地工作(我通常以root身份運行,但它也可以與其他用戶一起運行) 但是,當我使用mod_wsgi將應用程序部署到Apache時,它不起作用。在日誌中顯示該作業是按計劃進行的,但不會執行該作業。 我嘗試了一切從更改所有權到萬維網數據,權限,使其成爲可執行文件給所有用戶,以setuid爲根(巨大的安全問題) 我想要做的最後一件事是以root用戶身份運行apache。

+0

在那裏做什麼'echo「? – Leopd

+0

'at'命令只接受將被調度執行的可執行文件的名稱,不帶參數。 'echo'基本上強制'at'來安排可執行文件及其參數。查看'at'的手冊頁 – melsk

+0

我想你錯過了一組引號。 Echo被寫爲一個python關鍵字。 – Leopd

回答

2

對於計劃任務,使用croncelery。如果你需要以root身份運行某些東西,將腳本重新編寫爲一個簡單的守護進程並以root身份運行它是有意義的,你可以通過zeromq很容易地將命令傳遞給它。

+0

這不是一個重複的工作,所以我可以使用cron嗎? – melsk

+0

它不會重複發生?我以爲是。您希望什麼時候/多久需要執行此任務? – zeekay

+0

按需提供。隨機更糟? – melsk