2

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のキャッシュタイプをファイルベースに切り替えることはできますか?または私はそれを間違えていますか?

4

1 に答える 1

1

あなたの質問にはいくつかの詳細が欠けていますが、試してみましょう:

  • に渡される最初のパラメーターはFromCache()ビーカー キャッシュ領域の名前であり、構成された領域の 1 つと一致する必要がありますが、ここではそうではありません。それとも、コードでリージョンを構成しますか (リージョンが不明な場合はスローされると思います) default?BeakerException

  • pyramid_beakerモジュールをインストールして、Pyramid のプロジェクト構成に含める必要があります。pyramid_beaker マニュアルのセットアップセクションに従うことをお勧めします。

  • ファイル設定を Beaker__init__.pyに伝達するには、アプリケーションに追加のコードが必要です。.iniこれについては、マニュアルの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()
于 2012-09-26T23:37:18.113 に答える