用于大型数据集的Flask文件系统缓存

2024-05-23 15:40:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Dash应用程序,它接收多个CSV文件,并创建一个用于分析和可视化的组合数据框架。通常,对于大小为600-650 MB的数据集,此计算大约需要30-35秒。我使用Flask文件系统缓存来存储这个数据帧一次,每次我请求数据时,它都来自缓存

我使用了Dash示例here中的代码

我这里有两个问题:

  1. 似乎因为缓存在文件系统中,所以获取数据帧所需的时间是第一次尝试所需时间的两倍(近70秒),然后从后续请求中快速获取。我可以使用任何其他缓存类型来避免这种开销吗

  2. 我尝试通过设置CACHE_THRESHOLD自动清除缓存(例如,我将其设置为1),但它不起作用,我看到文件添加到目录中

示例代码:

app = dash.Dash(__name__)

cache = Cache(app.server, config={
    'CACHE_TYPE' : 'filesystem',
    'CACHE_DIR' : 'my-cache-directory',
    'CACHE_THRESHOLD': 1
})

app.layout = app_layout

@cache.memoize()
def getDataFrame():
   df = createLargeDataFrame()
   return df

@app.callback(...)  # Callback that uses DataFrame
def useDataFrame():
   df = getDataFrame()
   # Using Dataframe here
   return value

有人能帮我吗?谢谢


Tags: 文件数据代码app示例cachedfthreshold