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()
♪コントラスト − クラムボン










