繁体   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