📖 Что делает этот код?
```python
from functools import wraps
from time import time
def cached(ttl_sec=60):
def deco(fn):
cache = {}
@wraps(fn)
def wrapper(*args, **kwargs):
key = (args, tuple(sorted(kwargs.items())))
now = time()
if key in cache:
val, ts = cache[key]
if now - ts < ttl_sec:
return val
result = fn(*args, **kwargs)
cache[key] = (result, now)
return result
return wrapper
return deco
```
Что делает декоратор, какие у него проблемы.