"Bulut" dışında bir Google App Engine web uygulamasını standart bir web çerçevesine (webpy) taşıyorum ve Gae'da kullanılabilen bir memcache özelliğinin nasıl uygulanacağını öğrenmek istiyorum. Sadece uzak bir API her X saatleri alınan verilerin bir demet depolamak için bu önbelleği kullanmak benim app Ev yapımı minik memcache
; Başka bir deyişle, bu önbelleği çok fazla vurgulamıyorum. Tipik bir kullanım olacağınıclass TinyCache():
class _Container():
def __init__(self, value, seconds):
self.value = value
self.cache_age = datetime.now()
self.cache_time = timedelta(seconds = seconds)
def is_stale(self):
return self.cache_age + self.cache_time < datetime.now()
def __init__(self):
self.dict_cache={}
def add(self, key, value, seconds = 7200):
self.dict_cache[key] = self._Container(value, seconds)
def get(self, key):
if key in self.dict_cache:
if self.dict_cache[key].is_stale():
del self.dict_cache[key]
return None
else:
return self.dict_cache[key].value
else:
return None
:
data = tinycache.get("remote_api_data")
if data is not None:
return data
else:
data = self.api_call()
tinycache.add("remote_api_data", data, 7200)
return data
Nasıl artırabilirsiniz
Ben safça böyle bir şey uyguladık?
Bunu yapmam Gerekir Thread-Safe?
Bir önbellek arka ucuna bağlanan çoğu "standart web çerçeveleri" desteği ... Neden GAE arka ucunu çalıştıran bir sarmalayıcı uygulamıyorsanız, ve mevcut değilse, 'memcached' (veya Django'yu kullanmanız durumunda Django Önbellek API'sı) 'na geri döner. "Bulutsuz" bir memcache örneğine erişiminiz var mı? –
Hayır, memcached bir seçenek değil çünkü sağlayıcım tarafından desteklenmiyor. Ayrıca, GAE arka ucu da bir seçenek değil. Neden hızlı olması gereken bir şey için böyle uzunca bir gidiş dönüşe ihtiyacım var? – systempuntoout