簡體   English   中英

在金字塔框架中實現Sqlalchemy燒杯緩存

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM