장고에서 Long Polling과 관련하여 읽은 적이 있지만 내 문제는 토네이도를 사용하거나 채팅 응용 프로그램을 작성해야하는 복잡한 문제가 아닙니다.Long Polling in Django- DB에 활동이있을 때 응답을 반환하십시오.
JS 클라이언트가 N 초 후에 폴링 요청을 보냈습니다. DB에서 정보를 포함하는 테이블을 업데이트해야합니다. 서버를 요청하고 DB의 특정 테이블에 대한 작업이 있으면 해당 행을 반입하여 클라이언트에 반환해야합니다.
는, 그것이 나에게 경고한다 모델ABC
에서 일어나는 모든 활동이 있다면
class ABC(models.Model):
field1 = models.CharField(max_length = 255)
field2 = models.CharField(max_length = 255)
field3 = models.CharField(max_length = 255)
을 내 모델 말을하고 정보를 클라이언트로 다시 전송해야 할 수 있습니다.
<script type="text/javascript" charset="utf-8">
function addmsg_to_table(msg){
//apending to div
}
function waitForMsg(){
/* This requests the url "msgsrv.php"
When it complete (or errors)*/
$.ajax({
type: "GET",
url: "msgsrv.php",
async: true, /* If set to non-async, browser shows page as "Loading.."*/
cache: false,
timeout:50000, /* Timeout in ms */
success: function(data){
addmsg_to_table(data);
setTimeout(
waitForMsg, /* Request next message */
1000 /* ..after 1 seconds */
);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
addmsg_to_table(textStatus + " (" + errorThrown + ")");
setTimeout(
waitForMsg, /* Try again after.. */
15000); /* milliseconds (15seconds) */
}
});
};
$(document).ready(function(){
waitForMsg(); /* Start the inital request */
});
</script>
어떻게하면됩니까? 응답을 보내려면 내 views.py를 어떻게 모델링해야합니까? 활동이 테이블에서 발생했는지 여부를 어떻게 알 수 있습니까? 전 완전히 새로운 사람입니다. 감사합니다
음, 내 응용 프로그램은 토네이도 또는 웹 소켓을 사용하는 것이 아닙니다. 나를 위해 N 초마다 폴링이 가장 잘 어울립니다. 하지만 내 실제 쿼리는 내 모델에 시간 필드가 없다면 N 초 범위 내에서 테이블에 활동이 발생했는지 어떻게 알 수 있습니까? 내 모델에 '시간'필드를 사용하고 있었다면 범위 내에서 결과 목록을 쉽게 얻을 수 있었지만 시간 필드가 없으므로 테이블에 작업이 발생했는지 여부를 알 수 있습니까? 아니? – PythonEnthusiast
내 대답 편집 –