我正在尝试在我使用Pyramid构建的Web服务器上设置缓存.我正在使用pyramid_beaker,它创建了一个后端来使用Beaker进行缓存.
我一直在使用缓存区域装饰器来实现缓存.
示例缓存区域如下所示:
def getThis(request):
def invalidate_data(getData,'long_term',search_term):
region_invalidate(getData,'long_term',search_term)
@cached_region('long_term')
def getData(search_term):
return response
try:
request.matchdict['refresh']
except:
pass
search_term = request.matchdict['searchterm']
return getData(search_term)
Run Code Online (Sandbox Code Playgroud)
现在缓存工作正常,我可以触发每个区域的缓存刷新,我想知道如何刷新所有区域?
任何人都使用Redis作为Beaker后端成功了吗?你能告诉我链接或库怎么做吗?我正在寻找任何这样做的图书馆,但无法从谷歌搜索中得到任何东西.
我们如何使用Beaker在Google App Engine上实施会话?(我说Beaker是因为gmemsess是短暂的,因此不适合).网上似乎没有例子.
我们通过App Engine Helper(不是app-engine-patch)使用Django 1.1.
我从切换金字塔应用的会话配置cookie来ext:memcached.我的应用程序托管在Heroku上,我根据他们的文档配置了他们的memcache插件.
我从Beaker的文档中了解到,指定a session.lock_dir对于防止狗堆效应至关重要.要明确:我必须提供目录的文件路径.Beaker然后将其用作某种锁,以防止多个客户端同时尝试设置相同的值.
对我来说,这听起来像糟糕的建筑.memcache的一个主要优点是它可以作为共享的外部服务.将我的应用程序进程绑定到磁盘绑定锁似乎是错误的方法.
同样,在Heroku上,每个"dyno" 我有一个短暂的文件系统(我理解这意味着每个进程).因此,虽然我可以提供lock_dir目录路径,但如果每个进程使用不同的目录,那么这会保护我免受狗堆效应吗?
我不确定我是否应该:
另外,我想知道其他语言/框架在这里使用的模式.这只是一个烧杯问题还是其他非文件绑定设置遭受狗堆效应?
提前致谢,
詹姆士.
看起来Beaker支持两个数据库后端,分机:数据库和分机:sqla,但它们之间有什么区别?
在项目中,我需要缓存从每个请求中获取的数据库数据。这样从下一次开始,数据(表行)将从缓存而不是 db 中选取,从而提高性能。在 DB 中,我有超过 10M 的数据行。我正在阅读烧杯缓存文档,从中似乎它只会缓存函数和参数作为键。那么这如何存储表数据,这是我的主要目标?或者在python中还有其他好的数据库缓存模块吗?
早上好,
我遇到了一些麻烦,我希望有人能在这里帮助我.我想要做的是访问Gevent Socket-IO Name空间中的Flask会话.
我曾尝试将beaker用作中间件客户端,但我仍然无法从socket-io名称空间中访问和更新会话信息.
我对这一切都很陌生,所以任何帮助都将不胜感激.
我正在使用bottle.py编写应用程序,并且beaker.middleware.SessionMiddleware:
如何修改session.timeout和session.cookie_expires值以便我可以实现一个登录系统,将用户登录30天?
我已经实现了标准的登录系统,所以一切正常,直到浏览器关闭,但是如果用户选中" 记住我"复选框,我想修改这些值.
如果用户选中" 记住我"复选框,我想到了两个变体:
设置session.cookie_expires和session.timeout30天,但似乎因为我收到了Cookie到期的浏览器会话结束时,无视我的运行时修改,我不能在运行时修改这些值.
设置session.timeout为30天并覆盖名为beaker.session.id写入相同会话ID但不同的到期日期的cookie .但是从第1点开始的运行时问题仍然存在,似乎我无法访问我刚用烧杯创建的会话ID,所以我不知道在cookie中存储什么.
我该如何实现呢?
这是第一次提问者.
我目前正在努力使用Bottle微框架如何正确使用Beaker.这是有问题的程序:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# filename: server.py
import bottle as app
from beaker.middleware import SessionMiddleware
session_options = {
'session.type': 'file',
'session.data_dir': './session/',
'session.auto': True,
}
app_middlware = SessionMiddleware(app.app(), session_options)
app_session = app.request.environ.get('beaker.session')
@app.route('/login')
def login():
app_session = app.request.environ.get('beaker.session')
app_session['logged_in'] = True
@app.route('/logout')
def logout():
app_session = app.request.environ.get('beaker.session')
if app_session.get('logged_in'):
app_session['logged_in'] = False
return 'You are logged out'
app.redirect('/login')
@app.route('/dashboard')
def dashboard():
app_session = app.request.environ.get('beaker.session')
if app_session.get('logged_in'):
return 'You are logged in'
app.redirect('/login')
app.debug(True)
app.run(app=app_middlware, reloader=True)
Run Code Online (Sandbox Code Playgroud)
如果你注意到,我继续调用 …