1
나는 Tornado 웹 서버를 사용하고 있으며 비동기 쿼리 결과를 위해 정적 캐싱을 이용하려고합니다.비동기 쿼리를 파이썬으로 캐시하는 우아한 방법?
def wrap_static_result(key, result, callback, ttl):
cache.set(key, result, ttl)
callback(result)
def get_data(arg, callback):
cached = cache.get(arg)
if cached:
callback(cached)
else:
callback2 = lambda result: wrap_static_result(arg, result, callback, ttl=60)
do_async_query(arg, callback2)
가장 우아한 해결책 I : 신속 연속 통과를 사용하여 복잡한 도착, 그러나
@cache.wrap(ttl=60)
def get_data(arg):
return do_query(arg)
: 파이썬은 쉽게 장식을 사용하여 예를 들어, 어떤 종류의 캐시 기능을 포장 할 수 있습니다 호출 부호에 대한 가정을해야한다고 생각할 수 있습니다. 이는 항상 실용적이지는 않습니다. 누구든지 더 좋은 방법을 생각할 수 있습니까?
"계속할 가치가있는 부분은 무엇입니까? 통과 "는 실제로"콜백 전달 "입니다. 지속적인 전달을 위해서는 Python이 지원하지 않는 언어 지원 계속 기능이 필요합니다. – Glyph