2015年8月18日火曜日

CRON上で pyenv または anyenv


cron上で AnyEnv の pyenv を動かそうとすると、設定された環境で実行しない。
これでは、自動実行できないと途方に暮れて、検索すると...

[Stack Over Flow] Cron and virtualenv
http://stackoverflow.com/questions/3287038/cron-and-virtualenv


をみて、source として読み込んでみるが、うまくいかない。


【qita】cron で pyvenv 下の Python を実行させる
http://qiita.com/trsqxyz/items/a40244c48986df2aa8e0

では、対象が、pyenv のため、微妙に参考にならない。

Ubuntu の default python を version3.4 にする方法を調べてみたが、
こちらも ハードルが高そう。

ということで、引き続き、cron で anyenv + pyenv + virtualenv を使うことを模索。

さらに1時間ほど試行錯誤の結果
実行するpython を 使用するはずの python を指定すれば、対応できることがわかる。
testenv という名前の、pyenv上のvirtualenv であれば

$HOME/.anyenv/envs/pyenv/versions/testenv/bin/python

という python を動かすように、cron なり、cron がキックする ShellScript を書けば、動くことを確認。
例えば

python xxxxxxxx.py

と書いていたところを

$HOME/.anyenv/envs/pyenv/versions/testenv/bin/python xxxxxxxx.py

と書けば、cronでも実行されるようになる。

現在のところ、qita の記事のある通り、 cd してから、anyenv内にある python を実行する ShellScript を起動しているけれど、もしかすると、 cd してもしなくても、cd しても結果はあまり変わらないかもしれない(めんどくさいので試していない)。
phpenv とか rubyenv とか plenv でも同じような感じで、cron で実行できるかもしれない
(試してはいない)

ちなみに、celenium を使ったプログラムは、別の理由で実行されない模様。
こちらも引き続き調査中。

そういう方向で。

0 件のコメント: