日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flask-Cache的使用

發(fā)布時間:2024/2/28 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flask-Cache的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

當一個資源需要從服務器中獲取,并且資源比較龐大,服務器可能處理起來比較慢,并且此功能為熱門功能,可能用戶需要經(jīng)常訪問獲取。此時,服務器就可以考慮緩存技術。緩存就是數(shù)據(jù)交換的緩沖區(qū)(稱作Cache),當某一硬件要讀取數(shù)據(jù)時,會首先從緩存中查找需要的數(shù)據(jù),如果找到了則直接執(zhí)行,找不到的話則從內(nèi)存中找。由于緩存的運行速度比內(nèi)存快得多,故緩存的作用就是幫助硬件更快地運行。接下來將記錄一下如何緩存一個Flask的請求,并且記錄一下Flask的緩存擴展庫Flask-Cache:

安裝

pip install flask-cache
  • 1

初始化

當我們安裝好了Flask-Cache模塊時,我們還需要對其進行實例化,并進行相應的配置:

from flask import Flask from flask_cache import Cacheapp = Flask(__name__) cache = Cache(app,config={"CACHE_TYPE":"simple" })
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

也可以使用init_app()方法稍后設置你的實例:

app = Flask(__name__) cache = Cache(config={"CACHE_TYPE":"simple" }) cache.init_app(app)
  • 1
  • 2
  • 3
  • 4
  • 5

或者也可以這樣:

app = Flask(__name__) cache = Cache() cache.init_app(app,config={"CACHE_TYPE":"simple" })
  • 1
  • 2
  • 3
  • 4
  • 5

緩存視圖函數(shù)

要緩存視圖函數(shù),你可以使用@cache.cached()裝飾器,這個裝飾器默認使用request.path作為cache_key:

@app.route("/get_info") @cache.cached() def get_info():print "no cache"return "it is ok!"
  • 1
  • 2
  • 3
  • 4
  • 5

@cache.cached()裝飾器還可以接收參數(shù),如參數(shù)timeout設置緩存過期時間;參數(shù)unless接收一個Bool類型的值,如果設置為True將不會使用緩存機制;參數(shù)key_prefix替換默認的cache_key

緩存其他函數(shù)

使用@cache.cached()裝飾器可以緩存其它非視圖相關函數(shù)的結果,當使用@cache.cached()裝飾器緩存非視圖相關函數(shù)的結果時,建議傳入?yún)?shù)key_prefix來替換默認的cache_key,否則它將會默認使用request.path作為cache_key:

@cache.cached(timeout=30,key_prefix="aaa") def sum_data(a,b):return int(a) + int(b)
  • 1
  • 2
  • 3

memoize()

在@cache.memoize()裝飾器中,函數(shù)的參數(shù)也包含在cache_key中:

@cache.memoize(timeout=30) def sum_data(a,b):return int(a) + int(b)
  • 1
  • 2
  • 3

值得注意的是,對于不接收參數(shù)的函數(shù)來說,@cache.memoize()與@cache.cached()是一樣的

清除緩存

以下是一個用于清除應用程序緩存的示例腳本:

from manager import app,cachewith app.app_context():cache.clear()
  • 1
  • 2
  • 3
  • 4

配置

Flask-Cache支持多個類型作為緩存后端,不同的緩存后端,配置項也不盡相同,接下來記錄一下Flask-Cache支持的緩存后端:

  • null:無緩存。相關配置項如下:
配置說明
CACHE_ARGS在緩存類實例化過程中解包和傳遞的可選列表
CACHE_OPTIONS可選字典在緩存類實例化期間傳遞

-?simple:使用本地python字典進行存儲,這不是線程安全的。相關配置項如下:

配置說明
CACHE_DEFAULT_TIMEOUT默認過期/超時時間,單位為秒
CACHE_THRESHOLD緩存的最大條目數(shù)
CACHE_ARGS在緩存類實例化過程中解包和傳遞的可選列表
CACHE_OPTIONS可選字典在緩存類實例化期間傳遞

-?filesystem:使用文件系統(tǒng)來存儲緩存的值。相關配置項如下:

配置說明
CACHE_DEFAULT_TIMEOUT默認過期/超時時間,單位為秒
CACHE_DIR存儲緩存的目錄
CACHE_THRESHOLD緩存的最大條目數(shù)
CACHE_ARGS在緩存類實例化過程中解包和傳遞的可選列表
CACHE_OPTIONS可選字典在緩存類實例化期間傳遞

-?memcached:使用memcached服務器作為緩存后端,支持pylibmc或memcache或Google應用程序引擎memcache庫。相關配置項如下:

配置說明
CACHE_DEFAULT_TIMEOUT默認過期/超時時間,單位為秒
CACHE_KEY_PREFIX設置cache_key的前綴
CAHCE_MEMCACHED_SERVERS服務器地址的列表或元組
CACHE_ARGS在緩存類實例化過程中解包和傳遞的可選列表
CACHE_OPTIONS可選字典在緩存類實例化期間傳遞

-?redis:使用Redis作為緩存后端。相關配置項如下:

配置說明
CACHE_DEFAULT_TIMEOUT默認過期/超時時間,單位為秒
CACHE_KEY_PREFIX設置cache_key的前綴
CACHE_REDIS_HOSTredis地址
CACHE_REDIS_PORTredis端口
CACHE_REDIS_PASSWORDredis密碼
CACHE_REDIS_DB使用哪個庫
CACHE_REDIS_URL連接到Redis服務器的URL。示例redis://user:password@localhost:6379/2
CACHE_ARGS在緩存類實例化過程中解包和傳遞的可選列表
CACHE_OPTIONS可選字典在緩存類實例化期間傳遞

舉個栗子:

from flask import Flask from flask_cache improt Cacheapp = Flask(__name__) cache = Cache(app,config={"CACHE_TYPE":"redis","CACHE_REDIS_HOST":"192.168.0.158","CACHE_REDIS_PORT":6379,"CACHE_REDIS_PASSWORD":"123456","CACHE_REDIS_DB":2 })@app.route("/get_info") @cache.cached(timeout=30) def get_info():print "no cache!"return "it is ok!"if __name__ == "__main__":app.run()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • saslmemcached:使用memcached服務器作為緩存后端,打算與支持SASL的連接一起使用到memcached服務器。pylibmc是必須的,SASL必須由libmemcached支持。相關配置項如下:
配置說明
CACHE_DEFAULT_TIMEOUT默認過期/超時時間,單位為秒
CACHE_KEY_PREFIX設置cache_key的前綴
CAHCE_MEMCACHED_SERVERS服務器地址的列表或元組
CACHE_MEMCACHED_USERNAME使用memcached進行SASL認證的用戶名
CACHE_MEMCACHED_PASSWORD使用memcached進行SASL認證的密碼
CACHE_ARGS在緩存類實例化過程中解包和傳遞的可選列表
CACHE_OPTIONS可選字典在緩存類實例化期間傳遞

總結

以上是生活随笔為你收集整理的Flask-Cache的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。