私のdjangoプロジェクトは、 "at"スケジューラを使ってスケジュールされた時間にpythonファイルを呼び出します。これは私のmodels.py内で実行されますDjango 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にアプリケーションをデプロイすると、動作しません。ログでは、ジョブはスケジュールされていたものの、実行されていないことを示しています。 私は、所有権をwwwデータ、アクセス権に変更することから、すべてのユーザーに実行可能にしてrootにsetuidする(大規模セキュリティの問題) 最後にrootユーザーとしてapacheを実行します。
「エコー」とは何ですか? – Leopd
'at'コマンドは、パラメータなしで実行するようにスケジューリングされる実行可能ファイルの名前のみをとります。 'echo'は基本的に' at'に実行可能ファイルとそのパラメータをスケジュールするよう強制します。 'at'のマニュアルページを参照してください。 – melsk
私はあなたに一組の引用符がないと思います。 Echoはpythonキーワードとして書かれています。 – Leopd