2017-09-29 11 views
0

スケジュールパッケージを使用してDjangoでタスクをスケジュールする方法を学習しようとしています。ここに私のビューに追加したコードです。私は、私は私のインデックスビューでスケジューラを実行する必要があるので、私は1つのビューを持っていることを言及する必要があります..私はコードロジックに問題があることを知っているだけスケジューラをレンダリングし、ループでトラップします。これを使って?スケジュールパッケージを使用してDjangoのタスクをスケジュールする

def job(): 
    print "this is scheduled job", str(datetime.now()) 

def index(request): 
    schedule.every(10).second.do(job()) 
    while True: 
     schedule.run_pending() 
     time.sleep(1) 

    objs= objsdb.objects.all() 
    template = loader.get_template('objtest/index.html') 
    context= { 'objs': objs} 
    return HttpResponse(template.render(context, request)) 

答えて

1

不適切な方法を選択しました。定期的に実行する必要のあるスケジュールを設定する場合は、Webリクエスト内でこれを実行しないでください。この要求は決して終わりません。なぜなら、ループのせいで、ブラウザとウェブサーバーはこの動作を非常に嫌うからです。

代わりに、management commandを単独で実行し、タスクを呼び出す責任があります。

また、Django - Set Up A Scheduled Job?もお読みください。AMPQやcronのような他のアプローチについても教えてください。しかし、それらはスケジュールモジュールのあなたの選択を置き換えるでしょう。

関連する問題