나는 웹 폼에서 매개 변수를 취하고 DB w/SQL 연금술을 쿼리하고 결과가있는 테이블을 보여주는 jinja 생성 템플릿을 반환하는 플라스크 응용 프로그램이 있습니다. DB에 호출을 캐시하고 싶습니다. 내가 redis보고, Using redis as an LRU cache for postgres - 나를 이끌어 http://pythonhosted.org/Flask-Cache/Flask-cache 및 redis로 SQL alchemy 호출을 캐시하는 방법은 무엇입니까?
지금 나는 redis + flask-cache를 사용하여 DB에 대한 호출을 캐싱하려고합니다. Flask-Cache 문서를 기반으로 사용자 지정 redis 캐시를 설정해야하는 것처럼 보입니다. 먼저
: 내가 인수 및 kwargs로 무엇 배치해야합니까
class RedisCache(BaseCache):
def __init__(self, servers, default_timeout=500):
pass
def redis(app, config, args, kwargs):
args.append(app.config['REDIS_SERVERS'])
return RedisCache(*args, **kwargs)
는 거기에서 나는 두 가지 질문이
cache = redis(app, config={'CACHE_TYPE': 'redis'}) //not sure what to put for args or kwards?
app = Flask(__name__)
cache.init_app(app)
같은 것을 할 필요가? 이게 무슨 뜻입니까? 플라스크 캐시로 redis 캐시를 설정하려면 어떻게해야합니까?
둘째 : 일단 캐쉬가 설정 되었다면 어떻게 든 "memoize"을 호출하는 것처럼 보일 것입니다. 따라서 메서드가 동일한 쿼리를 가져 오면 캐싱 된 결과가 출력됩니다. 어떻게해야합니까? 필자의 가장 좋은 추측은 memoize 데코레이터를 사용할 수있는 메서드에서 SQL 연금술을 호출하는 것입니다. 두 개의 동일한 쿼리가 메서드에 전달되면 flask-cache는이를 인식하고 적절한 응답으로 돌아갑니다. 나는 그것이 같을 것이다 같은데요 :
@cache.memoize(timeout=50)
def queryDB(q):
return q.all()
이 레디 스 + 플라스크 + 플라스크 캐시 + SQL 연금술의 매우 일반적으로 사용되는 것 같아하지만 난 따라야 할 완전한 예를 찾을 수 없습니다입니다. 누군가가 게시물을 올릴 수 있다면, 그것은 도움이 될 것입니다.하지만 저와 다른 사람들은 줄을 서십시오.
쿼리 개체를 인수로 전달하면 개체의 메모리 주소를 사용하여 memoize가 반환되는 문제가 발생했습니다. 래핑 클래스가 이것을 해결했습니다. 희망이 사람을 도울 수 있기를 바랍니다 ... – ezdazuzena