crontabでpython使った際にエラーが出たときの対応例
2014年01月12日
これ誰得な感じなんだけどちょっと知ったことがあったからメモ。
やりたかったこと
Delicousにブックマークを追加したらはてブにも追加したかった、それだけ。何でそんな事をしたかったのかはまた別の機会に書く。
で、それをデバイス問わずにやりたいからChromeの拡張とかみたいに端末縛りがある方法とかはヤで何とかしてiftttみたいに「こっちに追加されたら自動でこれをやる」みたいにしたかったの。
そう考えるとiftttってすげーな。どういう手段からでもそのサービスへのアクションがあれば自動で別アクションをやってくれるって便利。つかiftttがはてブに対応してくれればそれで万事解決だよね。こういう時にローカルで戦ってる(よね?)サービスは不便。つかこれをやりたかった理由もその辺なんだけどまぁいいや。
タグが残念
で、まぁ実際はiftttでもDeliciousに追加したらメールを飛ばしてはてブに入れるって事も出来なくはないんだけど、それだとDelicious側でつけたタグが1つにまとまったタグになってすげー残念な感じ。例えば「html」「css」「js」ってタグをDeliciousでつけたらはてブでは「html css js」って1つのタグになっちゃう。すげー残念だしタグの意味がない。
だから何か別のいいソリューションはないかなぁって色々探してたら良い感じのがあったので見てみたらそれがPythonのライブラリでそれをcronすれば?って感じだったのでやってみたてとこまでがプロローグ。
ちなみに使ったライブラリはこちら
Delicious に投稿したらタグも含めてちゃんとはてブに投稿できるようにした – 人生いきあたりばったりで生きてます@はてな
これを今使ってるさくらVPSに入れようとした感じ。
やったこと
- Python2.7をインストール
- ライブラリをダウンロード、設定
- cronで動かす
たったこれだけ。
割とハマった
たったそれだけなんだけど実際やってみたら結構色々ハマりポイントがあったね。つかそろそろ python update とかでバージョン上げたり出来るようになりませんかね。Node.jsって割とそんな感じのカジュアルさでアップデートできた気がするんですけどどうでしたっけ。
で、まぁとりあえず頑張って2.7にしたら次は表題の通りで、普通にライブラリを実行した時は正常に動いたんだけどcronに仕込んだら動かなくなった。なにこれ。
結局原因はcronで起動させたpythonが /usr/bin/ とかのpyhtonを使ってたぽくて、僕としては自分でいれた /usr/local/bin/ のpythonを使ってほしい訳ですが何か全然上手くいかなくて困った。
結局対処法として何か場当たり的な感じではあるんだけどcrontabを設定する際に
0 * * * * python /path/to/d2h.py 60
じゃなくて
0 * * * * /usr/local/bin/python /path/to/d2h.py 60
こうすることにした。これで一応問題解決。
ホントは多分 /etc/crontab とかのPATHを変更すれば良い感じなんだろうけどそれやってもメール送信が出来なくて、/var/spool/mail/d2h ってファイルにPATHがやっぱり /usr/bin:/bin としか書かれてなかったから上の対応だったらいけるかなーと思ってやったらいけた。
基本仕事でUNIX触る事はないからUNIXについてはほとんど趣味レベルで知ってるくらいなんだけど、logとか見れば何とかなるもんだね、UNIX。
FBでコメント