【问题标题】:Where does Streamlit store cached data when using persist="disk"?使用 persist=\"disk\" 时,Streamlit 将缓存数据存储在哪里?
【发布时间】:2022-11-10 23:45:15
【问题描述】:

在 Streamlit 运行之间更改 pandas 的版本时出现以下错误:

AttributeError: Can't get attribute '_unpickle_block' on <module 'pandas._libs.internals' from '/opt/conda/lib/python3.8/site-packages/pandas/_libs/internals.cpython-38-x86_64-linux-gnu.so'>

由于我使用的是@st.experimental_memo(show_spinner=False, max_entries=3, persist="disk") ,因此似乎仍在使用保留在磁盘上的腌制数据,即使在杀死并重新加载 Streamlit 应用程序之后也是如此。这使得泡菜操作失败。

如何摆脱该错误(或摆脱缓存的数据)?

【问题讨论】:

    标签: caching streamlit


    【解决方案1】:

    缓存的数据存储在~/.streamlit/cache内部:

    $ ls -al ~/.streamlit/cache
    -rw-rw-r-- 1 vvvvv vvvvv 444K nov.   3 16:43 3b9268941beaac500fe825eae1588edd-10e37a1e5ea7a25c0ce5eb261dc18d4d.memo
    -rw-rw-r-- 1 vvvvv vvvvv    4 nov.  10 16:20 3b9268941beaac500fe825eae1588edd-23e3001508dcffed68f049cb063bc262.memo
    -rw-rw-r-- 1 vvvvv vvvvv 428K nov.  10 16:20 3b9268941beaac500fe825eae1588edd-663346b0bef4b568b0833efd2d033bcf.memo
    -rw-rw-r-- 1 vvvvv vvvvv 428K nov.   3 16:44 3b9268941beaac500fe825eae1588edd-a0b908404721bc015e4b911157e41ad1.memo
    -rw-rw-r-- 1 vvvvv vvvvv    4 nov.   3 16:43 3b9268941beaac500fe825eae1588edd-e5ac73f7820ca5608235d6d5b20ee1cf.memo
    -rw-rw-r-- 1 vvvvv vvvvv    4 nov.   3 16:43 3b9268941beaac500fe825eae1588edd-f05dc4d32c92e4f1f8ca6f1074e7853e.memo
    

    删除此处的文件解决了我的问题。

    我使用 snehankekre 在https://discuss.streamlit.io/t/where-data-is-cached/2931/4 上的回答找到了解决方案。


    笔记:这个解决方案在我的情况下有效,但缓存可以被多个 Streamlit 应用程序使用。因此,仅当只有一个应用程序正在使用缓存时,才能像这样删除所有文件。

    【讨论】:

      猜你喜欢
      • 2015-04-28
      • 2022-08-18
      • 2017-04-24
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 2015-11-17
      • 1970-01-01
      相关资源
      最近更新 更多