cron jobからDjangoフレームワークを利用する

Webシステムを作っていると、ブラウザからのアクセスとは別に非同期で処理を実行したい場面って結構あります。例えば、cronにジョブを設定して定期的に行う処理などです。

データベースに直接アクセスするなら何も考えなくてもできます。でも、せっかくだからDjangoのモデルを利用して楽をしたいですよね? 試しにmodelをimportしてみたけど、それだけではうまくいかない。で、どうやるのかなぁと調べてたら、下記のサイトに情報がありました。環境変数'DJANGO_SETTING_MODULE'を設定してあげれば良いらしいです。

Slowchop Studios » Blog Archive » Creating a Django cron job

こういうview.pyがあって、このdaily_job()をcronから呼び出したいとき。

import urllib2
from models import WebSite
def daily_job():
    for site in WebSite.objects.all():
        page_html = urllib2.urlopen(site.url).read()
        do_something_with_page_html(page_html)

こんな感じでプロジェクトのトップにスクリプトを置いてあげると、cronからDjangoフレームワークを呼び出して使うことができます。

#!/usr/bin/env python
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from mytestapp.views import daily_job
daily_job()

♪コントラスト − クラムボン



Leave a comment


:

:

:

:

このエントリーのはてなブックマーク (-)