Anthony Truchet commited on
Commit
d0ef630
·
1 Parent(s): aa1a2e9

fix: cache beahviour

Browse files
Files changed (2) hide show
  1. Dockerfile +3 -2
  2. src/app.py +14 -6
Dockerfile CHANGED
@@ -12,6 +12,7 @@ WORKDIR $APP_CODE
12
  COPY ./requirements.txt $APP_CODE/requirements.txt
13
  COPY ./packages.txt $APP_CODE/packages.txt
14
 
 
15
  RUN apt-get update && xargs -r -a $APP_CODE/packages.txt apt-get install -y && rm -rf /var/lib/apt/lists/*
16
  RUN pip3 install --no-cache-dir --upgrade pip
17
  RUN pip3 install --no-cache-dir -r $APP_CODE/requirements.txt
@@ -33,11 +34,11 @@ RUN mkdir -p /data && chown root:user /data && chmod ug+rwX /data
33
  # User
34
  USER user
35
  ENV APP_DATA $APP_DATA
36
- ENV APP_CODE $APP_CODE
37
  ENV HOME $APP_HOME
38
  ENV PATH $HOME/.local/bin:$PATH
39
  ENV HF_HOME $HF_HOME
40
- RUN mkdir -p $HF_HOME $APP_DATA
41
 
42
  # Expose streamlit application
43
  WORKDIR $APP_HOME
 
12
  COPY ./requirements.txt $APP_CODE/requirements.txt
13
  COPY ./packages.txt $APP_CODE/packages.txt
14
 
15
+ ENV APP_CODE $APP_CODE
16
  RUN apt-get update && xargs -r -a $APP_CODE/packages.txt apt-get install -y && rm -rf /var/lib/apt/lists/*
17
  RUN pip3 install --no-cache-dir --upgrade pip
18
  RUN pip3 install --no-cache-dir -r $APP_CODE/requirements.txt
 
34
  # User
35
  USER user
36
  ENV APP_DATA $APP_DATA
37
+ RUN mkdir -p $APP_DATA
38
  ENV HOME $APP_HOME
39
  ENV PATH $HOME/.local/bin:$PATH
40
  ENV HF_HOME $HF_HOME
41
+ RUN mkdir -p $HF_HOME
42
 
43
  # Expose streamlit application
44
  WORKDIR $APP_HOME
src/app.py CHANGED
@@ -5,7 +5,6 @@ import shelve
5
  import os
6
  import pathlib
7
 
8
-
9
  st.title("Uber pickups in NYC")
10
 
11
  DATE_COLUMN = "date/time"
@@ -16,12 +15,21 @@ DATA_URL = (
16
 
17
  DATA_PATH = pathlib.Path(os.environ.get("APP_DATA"))
18
 
19
-
20
  def cached_download_csv(url : str, **kwargs) -> pd.DataFrame:
21
- with shelve.open(DATA_PATH.joinpath("shelf.dat").as_posix(), writeback=True, flag='c') as shelf:
22
- df = shelf.get(url, pd.read_csv(url, **kwargs))
23
- return df
24
-
 
 
 
 
 
 
 
 
 
 
25
 
26
  @st.cache_resource
27
  def load_data(nrows):
 
5
  import os
6
  import pathlib
7
 
 
8
  st.title("Uber pickups in NYC")
9
 
10
  DATE_COLUMN = "date/time"
 
15
 
16
  DATA_PATH = pathlib.Path(os.environ.get("APP_DATA"))
17
 
 
18
  def cached_download_csv(url : str, **kwargs) -> pd.DataFrame:
19
+ shelf_filename = DATA_PATH.joinpath("shelf.dat").as_posix()
20
+ with shelve.open(shelf_filename, writeback=True, flag='c') as shelf:
21
+ st.info(f"Opened or created the shelf file '{shelf_filename}'")
22
+ maybe_cached = shelf.get(url)
23
+ if maybe_cached is None:
24
+ st.info(f"Downloawding URL '{url}'")
25
+ df = pd.read_csv(url, **kwargs)
26
+ shelf[url] = df
27
+ return df
28
+ else :
29
+ st.info(f"Re-using cached URL '{url}'")
30
+ assert isinstance(maybe_cached, pd.DataFrame)
31
+ return maybe_cached
32
+ # The context manager 'shelf' ensure set value as written back or return
33
 
34
  @st.cache_resource
35
  def load_data(nrows):