2013-02-25 3 views
1

Django를 사용하여 분류 자 ​​서비스를 개발 중이며, 사용자가 http://localhost/api/buildmodel과 같은 api를 사용하여 모델을 작성할 수 있습니다. 모델을 작성하는 데 오랜 시간이 걸리고 2 시간이 걸릴 수 있으며 결과를 표시하기 위해 웹 페이지를 사용하기 때문입니다. 모델을 만드는 것. 내 장고 프로그램을 즉시 반환하도록 설계하고 건물 완성 후 결과를 보여줄 수있는 방법은 무엇입니까? 어쩌면 아약스를 사용할 수 있지만 비동기 메서드를 사용하고 빌드 후 콜백 함수를 호출하는 것과 같은 Python으로 구현하고 싶습니다. 제안 사항은 만족 스러울 것입니다.실행하는 데 오랜 시간이 걸리는 요청을 처리하는 방법은 무엇입니까?

+0

리팩토링 코드. – catherine

답변

3

태스크 큐 관리자를 사용해야합니다. Celery은 Django에서 가장 많이 사용되는 작업 관리자입니다. 아이디어는이 관리자에게 작업을 제공 한 다음 작업을 처리하고 완료되면 콜백 기능을 실행할 수 있다는 것입니다. 콜백 함수 내에서 논리를 실행하여 작업이 완료되었음을 사용자에게 알릴 수 있습니다.

+0

감사합니다. 시험해 보겠습니다. – remykits

0

수행하는 한 가지 방법은 실행 중이거나 완료된 작업에 대해 영구 데이터베이스 (또는 redis 키/값 쌍)에 행을 만드는 것입니다. 작업이 시작될 때 코드가 실행되도록 값을 설정하고 작업이 완료되면 완료하십시오. 그런 다음 AJAX 호출이 웹 서비스를 통해 작업의 상태를 보내는 URL에서 GET 조회를 수행하게하십시오. 이를 setInterval()에 두어 주기적으로 데이터베이스를 폴링하여 완료되었는지 확인할 수 있습니다. 완료시 이메일을 보내거나 실행중인 작업의 상태를 보여주는 방문 페이지/대시 보드가 있습니다.

관련 문제