2017-09-29 7 views
0

일정 패키지를 사용하여 장고에서 작업을 예약하는 방법을 배우려고합니다. 내보기에 추가 한 코드는 다음과 같습니다. 나는 인덱스 뷰에서 스케줄러를 실행할 필요가 있다는 것을 언급해야한다. 코드 로직에 문제가 있으며 스케쥴러 만 렌더링하고 루프에 함정을 잡을 것이다. 어떻게 말해 줄 수 있는가? 그걸 써?일정 패키지를 사용하여 장고에서 작업 예약

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

잘못된 방법을 선택했습니다. 주기적으로 실행해야하는 일정을 예약하려면 웹 요청에서이 작업을 수행하면 안됩니다. Wile 루프 때문에 요청이 끝나지 않습니다. 브라우저와 웹 서버는이 동작을 매우 싫어합니다.

그 대신 자체적으로 실행되는 management command을 작성하여 작업을 호출해야 할 수 있습니다.

또한 Django - Set Up A Scheduled Job?을 읽고 싶을 수도 있습니다. AMPQ 및 cron과 같은 다른 접근법에 대해서도 알려줍니다. 그러나 그것들은 당신이 선택한 스케줄 모듈을 대체 할 것입니다.