Bir web formundan parametreler alan, DB w/SQL simyası sorgulayan ve sonuçları içeren bir tabloyu gösteren jinja tarafından oluşturulan bir şablon döndüren bir flask uygulamasına sahibim. DB'ye yapılan çağrıları önbelleğe almak istiyorum. Using redis as an LRU cache for postgres redis'e baktım - bu da beni http://pythonhosted.org/Flask-Cache/sql simya çağrıları Flask-önbellek ve redis ile nasıl önbelleğe alınır?
'a yönlendirdi. Şimdi DB'ye yapılan çağrıları önbelleğe almak için redis + flask-cache kullanıyorum. Flask-Cache belgelerine dayanarak, özel bir redis önbelleği ayarlamam gerekiyor gibi görünüyor. İlk
: Ben args ve kwargs ne için koyacağım
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)
Oradan iki soru var
cache = redis(app, config={'CACHE_TYPE': 'redis'}) //not sure what to put for args or kwards?
app = Flask(__name__)
cache.init_app(app)
gibi bir şey gerekir? Bunlar ne anlama geliyor? Flask önbelleği ile bir redis önbelleği nasıl kurarım?
İkincisi: Önbellek ayarlandığında, bir şekilde "memoize" ifadesini kullanmak istiyorum gibi görünüyor; böylece, yöntem aynı sorguyu aldığında çıktı önbelleğe alınmış olur. Bunu nasıl yaparım? En iyi tahminim, SQL simyasını, daha sonra memoize dekoratör olarak verilebilecek bir yöntemle sarmak olurdu. Bu şekilde, yönteme iki özdeş sorgu aktarılmışsa, flask-önbellek bunu algılar ve uygun yanıtı döndürür. Ben şuna benzer olduğunu tahmin ediyorum:
@cache.memoize(timeout=50)
def queryDB(q):
return q.all()
Bu REDIS + şişeye + şişe-cache + sql simya oldukça yaygın kullanım gibi görünüyor ama takip etmek ve eksiksiz bir örnek bulamıyorum. Birisi bir mesaj gönderebilseydi, bu çok yararlı olurdu - ama benim için ve diğerleri için de.
Sorgu nesnesini argüman olarak iletmenin, nesnenin bellek adresini kullanarak not almasını sağlayan problemle karşılaştım. Bir sarma sınıfı bunu çözdü. Bu birisine yardımcı olabilir umarım .. – ezdazuzena