我正在尋找一個簡單的(即,不需要我設置單獨的服務器來處理消息隊列)的方式來進行長輪詢一個運行計算並生成圖形的小型web界面。這是我的web界面需要做什麼:Python中的非消息隊列/簡單的長輪詢(和Flask)
- 用戶在Web界面
- 服務器運行一些計算請求圖/數據。
- 當服務器正在運行計算時,一個小容器會更新(可能通過AJAX/jQuery)並計算進度(類似於您在打印控制檯中執行的操作(即打印'計算密度函數...' ))
- 計算完成和圖形顯示給用戶。
由於計算全部完成服務器端,我真的不知道如何輕鬆地設置此。很明顯,我將要設置一個REST API來處理輪詢,這在Flask中很容易。但是,我不確定如何檢索實際更新。一個明顯的,儘管這個目的很複雜,解決方案將是建立一個消息隊列並進行一些長的輪詢。但是,我不確定這是否是這種簡單的正確方法。
這裏是我的問題:
- 有沒有辦法做到這一點使用的文件系統?性能不是一個大問題。 AJAX/jQuery能從文件中找到消息嗎?保存進度到一些.json文件?
- 怎麼樣酸洗? (我對酸洗不是很瞭解,但也許我可以醃製一個消息字典,它可以通過處理輪詢的API讀取)。
- 投票甚至是正確的方法?有沒有更好或更普遍的模式來處理這個問題?
我有一種感覺,我太過於複雜,因爲我知道這種事情在網絡上很常見。很多時候,我發現有些事情正在發生,有些「loading.gif」圖片正在運行,而有些計算正在進行(例如,在Google Analytics中)。
感謝您的幫助!
啊,非常感謝你*這麼多!我今晚會看看你的代碼。 「但根據我的經驗,找到服務器端實施的優秀簡單例子已經很困難。」是我的確切體驗,所以我很高興聽到我並不孤單。再次感謝!! – aaronlevin
僅供參考我先用bottle.py(帶有一個長子處理腳本)嘗試了這個,並且遇到了一些阻塞問題。隨着燒瓶它的效果很好。謝謝! – Nate
如何讓多個客戶端同時同步接收信號? – r1d3h4rd