2012-07-09 2 views
0

서버에서 몇 가지 작업을 수행하는 데 사용되는 대형 Python 스크립트 용 웹 기반 GUI 인터페이스를 작성하고 있습니다. 응용 프로그램 자체는 매우 가볍지 만 Django를 사용하여 웹 GUI를 만들었습니다. 사용자 관리와 같은 이미 내장 된 기능을 재사용 할 수 있기 때문입니다.Ajax가 시스템 작업의 진행률을 실시간으로 업데이트합니다.

나는 논리적 인 단계의 수, 검사, 파일의 복사를 필요로하는 기능을 가지고있다. 바닐라 프로그램에서는 모든 상태를 캡처하는 로그 파일을 사용했습니다. 고객은 실시간으로 상태 변화가있는 각 단계를 보여주는 페이지를 원합니다.

올바른 전략은 무엇입니까? 찍은 단계는 무엇입니까? Progess Bar는 내가 원하는 것이 아니며 실시간으로 더 진행되는 보고서입니까? 수행 할 단계를 안내하거나 튜토리얼을 가리킬 수 있습니까?

답변

1

업데이트가 있는지 주기적으로 브라우저에서 백엔드를 폴링해야합니다. 이는 장기 실행 스크립트가 비동기 적으로 실행되고 있다고 가정합니다. 정기적 인 업데이트는 로그 파일의 꼬리와 유사합니다. 잠시 동안 새로운 정보가 로그에 추가되었는지 확인합니다.

빌드에 도움이되는 몇 가지 기존 jQuery 플러그인이 있습니다. PeriodicalUpdater for jQuery은 서버 응답이 잠시 동안 변경되지 않으면 폴링 간격을 조정한다는 점에서 매우 좋습니다.

기본적으로 이러한 플러그인을 사용하면 현재 상태를 반환하는 Django보기와 프로세스의 로그 파일 출력이 필요하며 PeriodicalUpdater에서 해당보기를 폴링해야합니다. PeriodicalUpdater의 콜백 함수에서 프로세스가 완료되었다는 확인을 추가해야합니다. 서버 뷰가 "로그 완료"에서 "프로세스 완료"행을 쉽게 감지 할 수 있거나 만 최종 상태로 구성되는 응답을 반환 할 수 있습니다.

+0

일반적으로 함수는 복사 파일, 권한 변경 등 약 10 단계를 수행하며이 작업이 성공적으로 완료되었는지 여부를 캡처하려고합니다. 전체 프로세스는 최대 3 분이 소요됩니다, 각 상태를 업데이 트하는 아약스 플러그인이 필요하고 그 기능이 끝났음을 발표하는 것을 중지하십시오. 진행률 막대의 일종이지만 각 단계를 업데이트하고 녹색 마크를 표시합니다. 성공 또는 문제가 발생하면 녹색 마크를 표시합니다. – ramdaz

+0

그런 다음 진행률보기는 단계가 완료됨에 따라 확인 표시가 미리 렌더링 된 단계를 반환하며 설문 조사는 여전히이를 호출해야합니다. –

관련 문제