如何使用lru_cache缓存在不同类实例中使用的utils函数?

时间:2019-04-20 12:17:11

标签: python caching

在实用程序模块中使用lru_cache时,在修饰方法并从两个不同的类实例进行调用后,我发现cache_info()每次调用修饰的方法时仅显示一个命中。 / p>

awsUtils.py


@lru_cache(maxsize=32)
def getRdsDetailsCached(name, region):
  return getRdsDetails(name, region):

def getRdsDetails(name, region):
  client = boto3.client('rds', region)
  response = client.describe_db_instances(DBInstanceIdentifier=name,)
  return response['DBInstances']

Replication.py

class Replication(ActionBase):

  def __init__(self, **entries):
    super().__init__(**entries)
    self.rdsDetails = awsUtils.getRdsDetailsCache('my-db', 'us-west-2')

Postgress.py

class Postgress(DependencyBase):

  def __init__(self, **entries):
    super().__init__(**entries)
    self.rdsDetails = awsUtils.getRdsDetailsCache('my-db', 'us-west-2')

初始化以上两个类时,我希望第一个实例调用awsUtils.getRdsDetailsCache会创建一个缓存,而其他任何实例都将重用该缓存。但是实际结果是每个结果均显示命中数为1。

Image showing cache result after second call to getRdsDetailsCache

0 个答案:

没有答案