[英]Implementing Sqlalchemy beaker caching in pyramid framework
根據sqlalchemy文檔提供的用於緩存sqlalchemy查詢的示例,我們假設要這樣做
from caching_query import FromCache
# load Person objects. cache the result under the namespace "all_people".
print "loading people...."
people = Session.query(Person).options(FromCache("default", "all_people")).all()
我在development.ini中具有以下燒杯配置
cache.regions = day, hour, minute, second
cache.type = file
cache.data_dir = %(here)s/cache/sess/data
cache.lock_dir = %(here)s/cache/sess/lock
cache.second.expire = 1
cache.minute.expire = 60
cache.hour.expire = 3600
cache.day.expire = 86400
當我在應用程序數據中使用以上示例代碼時,未將其緩存在緩存文件夾中,因此我假設基於內存的緩存為默認設置,是否可以將sqlalchemy緩存類型切換為基於文件的緩存? 還是我弄錯了?
您的問題缺少一些細節,但讓我嘗試:
傳遞給FromCache()
的第一個參數是Beaker緩存區域的名稱,它應與已配置區域之一匹配,此處不是這種情況。 還是您在代碼中配置了default
區域(如果區域未知,我會期望拋出BeakerException
)?
您需要安裝pyramid_beaker
模塊並將其包含在Pyramid的項目配置中。 我建議您遵循pyramid_beaker
手冊的“ 設置”部分 。
您需要在應用程序的__init__.py
中添加一些額外的代碼,才能將.ini
文件設置傳播到Beaker。 手冊的“ 燒杯緩存區域支持”部分對此進行了說明。
這是我當前項目中的一個工作示例,同時配置了基於Beaker的會話和緩存(已刪除所有不相關的部分):
from pyramid.config import Configurator
from pyramid_beaker import set_cache_regions_from_settings
from pyramid_beaker import session_factory_from_settings
def main(global_config, **settings):
# Configure Beaker caching/sessions
set_cache_regions_from_settings(settings)
session_factory = session_factory_from_settings(settings)
config = Configurator(settings=settings)
config.set_session_factory(session_factory)
config.include('pyramid_beaker')
config.add_static_view('static', 'static', cache_max_age=3600)
config.add_route('home', '/')
config.scan()
return config.make_wsgi_app()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.