Openshiftで定期処理


Pocket

OpenShiftを使って定期的なタスクを実行する方法です。

例えば、OpenShiftで運用しているブログやWebサービスの定期バックアップを取ったり、FacebookやTwitterへ定期投稿したりなどです。

 

cronカートリッジを使用する

Openshiftアプリは各種カートリッジを追加することで、いろいろなサービスを追加することができます。
MongoDBやMySQL、Jenkinsカートリッジなど。
その中にあるCronカートリッジを使用することで定期処理をアプリに追加することができます。

Cronカートリッジ
アプリページの「see the list of cartridges you can add」をクリック。

Cronカートリッジ
リストからCronを選択。

 

定期処理を実装

Cronカートリッジを追加すると、下記フォルダが追加されていると思います。

~/app-root/runtime/repo/.openshift/cron

cronフォルダの中には、
・daily
・hourly
・minutely
・monthly
・weekly
があって、それぞれ実行されるタイミングになっています。

定期処理を行う場合は、対象のフォルダに、jobs.allow、jobs.deny、実行するスクリプトファイルを作成して。
jobs.allowにスクリプトファイル名を記載すればOKです。
なお、jobs.denyには実行する必要のないファイルを記載します。

例:
-daily
 -jobs.allow
 -jobs.deny
 -task
 -memo

<jobs.allow>

task

<jobs.deny>

memo

としておけば、1日おきにtaskが実行されます。memoは実行されません。

 

5分おきとか時間を指定したい場合

どうやらできない?ようです。

それぞれのスクリプトの中で時間判定処理を追加することで一応実現は可能です。

参考:Run CRON job every 5 minutes on OpenShift (Red Hat Cloud)

ちなみに、dailyにセットしたスクリプトが実行される時刻は3:30 EST(日本時間:17:30)頃でした。

 
 

あとがき

Facebookへの自動投稿を作るときに使用しました。

最初はdjango-celeryを使ってみようと思ったのですが、上手く動かず断念。
Cronを使うことにしたのですが、後からopenshift-celery-cartridgeを発見しました。
次の機会があったら試して見たいと思います。

ではでは~。

 
 

Leave a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>