我已閱讀過關於Django中長輪詢的SO,但我的問題並不複雜,需要使用龍捲風或構建聊天應用程序。Django中的長輪詢在數據庫中發生活動時返回響應
我有一個JS客戶端,在N秒後發送輪詢請求。我需要更新包含來自數據庫的信息的表格。我輪詢請求服務器,並且如果在數據庫中的特定表上有任何活動,則應該提取該行並將其返回給客戶端。
比方說我的模型是
class ABC(models.Model):
field1 = models.CharField(max_length = 255)
field2 = models.CharField(max_length = 255)
field3 = models.CharField(max_length = 255)
如果有任何活動發生在模型ABC
,應該提醒我,應該發送回客戶端提供信息。
<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秒輪詢一次最適合。但是我的實際查詢是:如何在我的表中發現某個活動是否在我的表內發生,如果我沒有在我的模型中使用時間字段。如果我在模型中有'time'字段,我很容易得到範圍內的結果列表,但由於我沒有時間字段,我怎麼才能知道某個活動是否發生在我的桌子上,或者不? – PythonEnthusiast
編輯我的答案 –