2014-02-11 4 views
0

나는 데이터 처리 및 django의 성격에 작은 문제가 있습니다. 시동기를 위해 . 고급 dhtmlx 테이블이있는 웹 페이지가 있습니다. DHTMLX 테이블에 행을 추가하는 동안 POST 데이터가 자동으로 장고 백엔드로 보내지며 여기서 반환 된 XML 데이터가 웹 페이지로 전송됩니다. 한 번에 1 행을 추가 할 때 모두 잘 작동합니다. 그러나 한 번에 여러 행을 추가 할 때 몇 가지 문제가 발생하기 시작합니다. 우선, 백엔드에 데이터를 전송하는 순서와 그 적절한 순서를 확인했습니다. 행 ID 1,2,3,4가 순서대로 전송됩니다. 문제는 백엔드가 도착했을 때 쿼리를 처리한다는 것인데, 대개는 인터넷의 임의성과 관계없이 동일한 순서로 도착합니다. 그러나 django는 즉시 같은 함수를 발생 시키며, 계산에 시간이 걸리는 복잡한 함수이므로 응답을 보냅니다. 문제는 함수가 호출 될 때마다 데이터베이스에 변화가 있고 변수 중 하나가 우리가 변경하려는 데이터베이스 테이블의 크기에 달려 있다는 것입니다. 동일한 데이터 테이블을 잘못된 순서 (다른 스레드 속도)로 변경하는 동안 결과 데이터는 쓰레기입니다.장고 대기열 함수 호출

함수라고하는 하나의 웹 호출 대기열에 자동 해결책이있어 모든 호출이 대기열로 이동하여 이전에 완료 될 때까지 기다릴 수 있습니다. ?? 이 함수에 대해서만 대기열을 만들고 싶습니다.

답변

0

django에서 대기열을 빌드해야하는 것처럼 보입니다. 행을 백엔드에서 순차적으로 처리해야하는 경우 변경 데이터를 대기열에 삽입하고 이벤트 처리기처럼 대기열을 처리하십시오.

dhtmlx의 이벤트 핸들러와 ajax 콜백 핸들러를 사용하여 송신 대기열을 만들 수 있습니다. 왜 그런가? 네트워크는 이미 느려지고 있으며 느려지는 것은 잘못된 접근입니다.

+0

그럼 당신 말이 맞아요. 내가 그것에 대해 더 생각했을 때, 자바 스크립트가 싱글 스레드와 파이썬 멀티의 문제가 있습니다. 인터넷 연결의 야생성과 함께 테이블과 백엔드 간의 동기화. 많은 작업을하고, 많은 에러와, 중간에 보내지는 많은 데이터에 대해, django에서 전체 테이블을 생성 한 후 업데이트하는 것은 처음부터 둘을 동기화하는 것이 아니라 XML에서 frontend로 보내는 것보다 쉽습니다. 그것은 슈퍼 쉽고 가벼운지만, 그냥 문제를 해결하는 대신 그것을 건너 뛰는거야 : / – webster58