短時間內點選 同一操作,進行快取

2022-06-16 08:36:11 字數 1963 閱讀 8228

在開發過程中,如果存在查詢很費時間,還經常要點選同乙個操作的時候,我們可以使用下面的方式;查詢後我們先把資料存在redis中,設定乙個過期時間,如果在過期時間內,他在此進行了本次操作,我們可以直接返回給他redis中快取的資料,而不用在此進行查詢了。

import

json

import

logging

import

pickle

import

threading

import

time

from redis import

redis

class

cache(redis):

def__init__

(self, host, port, db, password):

self.host =host

self.port =port

self.password =password

self.db =db

super(cache, self).

__init__(host=self.host, port=self.port, db=self.db, password=password)

route_cache =

class

queueservice(object):

q = cache(**route_cache)

task_key = "

search_task_key

"def

__init__

(self, func):

self.func =func

self.task = threading.thread(target=self.start)

self.task.daemon =true

self.task.start()

@staticmethod

def send_task(key, **kwargs):

d =

#存入乙個狀態

queueservice.q.set(key, pickle.dumps())

kwargs.update(d)

#修改 上面儲存的資料 填入 res 資料百分比(執行緒任務)

queueservice.q.lpush(queueservice.task_key, json.dumps(kwargs))

defstart(self):

while

true:

try:

time.sleep(2)

param =queueservice.q.rpop(queueservice.task_key)

except

exception:

param =none

ifparam:

param =json.loads(param)

key = param.pop("

key"

) res_to_store =

queueservice.q.set(key, pickle.dumps(res_to_store), ex=300)

上方**是 鏈結了redis資料庫,在有請求過來的時候,我們會有乙個執行緒一直在跑,看是否有我們要處理的資料。

def

get_result(key):

result =queueservice.q.get(key)

ifnot

result:

return -1,

res =pickle.loads(result)

return res.get("

task_status

"), res.get("

res")

這裡的**是,每次請求的時候,我們要先判斷一下,redis 中是否有快取,如果已經有快取,我們可以直接拿快取,而不用在此進行查詢了。

IONIC WebApp之防止短時間內按鈕多次點選

因網路延遲的緣故,對著某個按鈕狂點導致請求過多,剛開始想直接把按鈕disabled掉,然後發覺這個按鈕是div樣式,並用的ng click做的事件繫結,因而並不奏效。如果博友們有其他的解決方法,求提供啊 config provide function provide else,delay,false...

中級應該如何在短時間內備考?

準備經濟師考試的複習安排可以拉的比較長,且不會占用過多時間,無基礎也一樣不占用太多時間 但這樣需要2年才能考完拿證。如果想速度一年內拿證則至少要將複習安排時間加長一倍以上。一 具體備考安排 1.報班跟學,這樣會省不少時間,可以倍速學習,然後對照教材進行學習安排。報班的安排如下 跟著網課學習第一遍教材...

Azure短時間內不會變成GitHub上的首選雲

techweb報道 6 月 6 日訊息,微軟收購github一事,成為了目前開發人員 fsxtpy雲計算廠商最為關注的話題,沒有之一。大家都在猜測程式設計客棧這個全球第二大雲基礎設施服務廠商,將如何對待那些在其他雲提供商上執行 的github使用者。github創始人chris wanstrath表...