2012-04-03

djangoでcron

Bing Translateのアクセストークンを取得する処理に結構時間がかかるので、9分おきに自動でトークンが更新されるようにcronを設定することにしました。

まず、トークンを更新する処理をdjango-adminに追加します。名前を refresh_token とします。

そのあと、
sudo crontab -e -u root
という具合にして、root権限で実行される処理を定義するためのエディタを開いて、そこに次の記述を追加しました。

0-59/9 * * * * /path/to/manage.py refresh_token

これで9分おきに manage.py refresh_token が実行されるのですが、残念ながら上手く動きませんでした。カレントディレクトリが /root であるために、refresh_tokenが見えていないみたいです。

おそらく、cronを実行するときのディレクトリを変えるという手もあったのでしょうが、もう一個shellscriptを書いて、カレントディレクトリを変更してからmanage.py refresh_tokenを実行するようにしました。ShellScriptの中でsudoを使ったらエラーになって、ここでも若干手こずりましたが、無事に動作することを確認しました。実行するユーザーはrootでない方がいいかもしれませんが。

0 件のコメント: