前段時間工作中遇到乙個問題,需要提供給前端乙個進度資訊展示的介面,一直的思路是將資訊資料放redis中,當每次請求的時候從redis中取出來,更新後再放回redis中,並且將此次的資料返回給前端。但是有乙個問題推翻了這種思路,當資料量過大時、或者獲取某一資料耗時過長時,前端會間隔幾秒就來請求介面,但是資料來不及返回,前端就會報錯。
為解決上述問題,提出進度引擎方案。進度引擎需要實現的功能是:需要監聽訊號,當接收到start訊號後,開始從redis中lrange獲取列表中相應鍵的值資訊,然後請求資料進行填充,當資料填充結束後lset / rpush進去更新redis中原有的資料資訊即可。當接收到stop、restart、pause、resume等訊號時,採取相應的措施即可。
給前端提供資料的介面每次只用去獲取redis中的資料資訊即可。
這樣避免了在乙個介面中既要請求資料又要返回資料,還常常因為資料量大、返回速度慢等原因造成的報錯問題。
從redis中獲取list型別的鍵值資訊介面:
def load_plan_id(p_id): ####planstate_
#msg = redis_strict.lpop("planstate_"+str(p_id))#在"planstate_"+str(p_id)對應列表的左側獲取第乙個元素並在列表中刪除 返回值是第乙個元素
msg = redis_strict.lrange("planstate_"+str(p_id),0,0) #在"planstate_"+str(p_id)
#print 'lrange 獲取的msg結果展示:',msg
if msg:
try:
c_p = json.loads(msg[0])
return c_p
except:
return {}
else:
return {}
向redis中更新list型別的鍵值資訊介面:
def push_plan_id(p_id,new_p):
msg = json.dumps(new_p)
msg1 = redis_strict.lrange("planstate_"+str(p_id),0,0)
if msg1:
*** = redis_strict.lset("planstate_"+str(p_id),0,msg)
else:
*** = redis_strict.rpush("planstate_"+str(p_id),msg)
歡迎介面進度條顯示
程式設計中,為了使我們的軟體更加人性化,需要乙個歡迎介面,顯示乙個幾秒鐘的動畫。1.首先貼圖,貼上背景和進度條 2.然後設定進度條動畫顯示 4.將進度條放置在背景下一層顯示 這樣我們就能看到乙個簡單帶有進度條的歡迎介面了 h檔案 private int m nstep image m pimageb...
C 建立介面進度條
這幾天學習了委託和執行緒的學習 今天就來說說進度條的載入 開始 向目標窗體新增backgroundworker控制項 backgroundworker用到這兩個方法 dowork負責監視執行程式,將執行程式放在這個方法裡 complete是事件結束執行 這裡我做乙個小測試 private void ...
進度控制 SeekBar進度條
通過滑塊的位置來標識數值,而且拖動條允許使用者拖動滑塊來改變進度值的大小。1.主要屬性和方法 setmax 設定seekbar的最大數值 setprogress 設定seekbar當前的數值 setsecondaryprogress 設定seekbar的第二數值 2.seekbar與progress...