進度介面 進度引擎

2021-10-08 04:11:12 字數 1257 閱讀 4618

前段時間工作中遇到乙個問題,需要提供給前端乙個進度資訊展示的介面,一直的思路是將資訊資料放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...