Внедряване на кеширане на чаши на Sqlalchemy в пирамидална рамка

Според примера, предоставен от документацията на 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 към базиран на файл? или разбирам погрешно?


person Madawar    schedule 26.09.2012    source източник


Отговори (1)


Във въпроса ви липсват някои подробности, но нека опитам:

  • първият параметър, предаден на FromCache(), е име на кеш регион на Beaker, той трябва да съответства на един от конфигурираните региони, което не е случаят тук. Или може би конфигурирате default регион в кода (бих очаквал BeakerException да бъде хвърлен, ако регионът е неизвестен)?

  • имате нужда от инсталиран модул pyramid_beaker и включен в конфигурацията на проекта на Pyramid. Предлагам ви да следвате pyramid_beaker раздела Настройка в ръководството.

  • имате нужда от допълнителен код в __init__.py на вашето приложение, за да прехвърлите .ini файлови настройки в Beaker. Това е описано в Поддръжка на Beaker cache region< /em> раздел на ръководството.

И ето работеща извадка от текущия ми проект, конфигуриращ както сесии, базирани на 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()
person Code Painters    schedule 26.09.2012