2012-11-01 6 views
1

시작, 중지, 일시 중지 및 다시 시작 단추가 4 개있는 HTML 페이지가 있습니다. 버튼의 기능은 다음과 같습니다.반응 형 Django보기

  • 시작 버튼 : 백엔드 시뮬레이터를 시작합니다. (시뮬레이터 실행에 약 3 분이 소요됩니다.)
  • 중지 버튼 : 시뮬레이터를 중지합니다.
  • 일시 중지 단추 : 시뮬레이터를 일시 중지합니다.
  • Resume 버튼 : 일시 정지 된 스테이지에서 시뮬레이터를 다시 시작합니다.

각 버튼을 클릭하면 별도의보기 기능이 호출됩니다. 내가 직면하고있는 문제는 시작 버튼을 클릭하면 파이썬 뷰에서 함수 호출을 통해 시뮬레이터를 시작한다는 것이다. 그러나 시뮬레이터가 실행 완료를 위해 약 3 분이 소요된다고 언급했었다. 3 분 동안 UI가 완전히 응답하지 않습니다. 장고의 현재보기가 렌더링 될 때까지 Stop, Pause 또는 Resume 버튼을 누를 수 없습니다.

그래서이 문제에 접근하는 가장 좋은 방법은 무엇입니까? 시뮬레이터를위한 비 블로킹 프로세스를 생성해야합니까? 그렇다면 새로운 생성 된 프로세스가 실행 완료된 뷰를 렌더링 한 후에 어떻게 알 수 있습니까?

답변

1

프론트 엔드에는 확실히 Ajax가 필요합니다.

백엔드의 경우 celery과 같은 것을 사용하면 비동기 작업 (에뮬레이터 시작/중지)을 실행할 수 있습니다. 셀러리와 통신하려면 polling, long polling 또는 web sockets으로 할 수 있습니다.

+0

나는 샐러리에 대해 살펴보고 여기에 업데이트 내용을 언급 할 것이다. 현재 AJAX를 사용하고 있습니다. – Sibi

+0

또한 내 현재 AJAX 구현은 특정 Django 뷰 기능을 호출합니다. – Sibi

+0

@Sibi Yes 그리고 특정보기 기능은 아마도 셀러리와 대화해야 할 것입니다. – rantanplan

0

나는 시뮬레이터를 시작하기 위해 아약스를 사용하는 것이 가장 쉽다. 시작 요청에 대한 응답은 동일한 페이지에서 업데이트 할 수 있습니다.

그러나 이전 요청으로 시작된 시뮬레이터를 일시 중지, 다시 시작 및 중지하는 방법에 대해 계속 생각해야합니다. 즉 시뮬레이터의 상태를 관리하고 조작하는 방법.

DB에서 업데이트 하시겠습니까?

+0

현재 시뮬레이터를 시작하려면 AJAX를 사용하고 있습니다. 심지어 AJAX를 사용하여 특정 장고보기 기능을 호출하고 시뮬레이터가 실행될 때까지 UI를 차단합니다. – Sibi