Skip to content

Commit

Permalink
cleanup cache
Browse files Browse the repository at this point in the history
  • Loading branch information
LNshuti committed Mar 10, 2024
1 parent d6f33f4 commit f9d4d5a
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 1 deletion.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ prod-example/stacks/
wandb/
data/ContractOpportunitiesFull.csv
awards_by_contractor_type.numbers
text-to-sql-rag/log_app_wandb.py
text-to-sql-rag/log_app_wandb.py
app/eval_tutorial.py
Binary file added app/__pycache__/deploy_datasette.cpython-311.pyc
Binary file not shown.
Binary file added app/__pycache__/eval_tutorial.cpython-311.pyc
Binary file not shown.
70 changes: 70 additions & 0 deletions app/deploy_datasette.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import asyncio
import pathlib
import shutil
import subprocess
from datetime import datetime
from urllib.request import urlretrieve

from modal import Image, Period, Stub, Volume, asgi_app

stub = Stub("gov-contracts")
datasette_image = (
Image.debian_slim()
.pip_install("datasette~=0.63.2", "sqlite-utils")
.apt_install("unzip")
)

# ## Persistent dataset storage
volume = Volume.from_name(
"gov-contracts-2", create_if_missing=True
)

VOLUME_DIR = "/cache-vol"
REPORTS_DIR = pathlib.Path(VOLUME_DIR, "gov-contracts")
DB_PATH = pathlib.Path(VOLUME_DIR, "gov-contracts.db")

def chunks(it, size):
import itertools

return iter(lambda: tuple(itertools.islice(it, size)), ())

@stub.function(
image=datasette_image,
volumes={VOLUME_DIR: volume},
timeout=900,
)
def prep_db():
import sqlite_utils

DB_PATH.parent.mkdir(parents=True, exist_ok=True)
db = sqlite_utils.Database(DB_PATH)

db.close()

print("Syncing DB with volume.")
volume.commit()

# ## Web endpoint
@stub.function(
image=datasette_image,
volumes={VOLUME_DIR: volume},
allow_concurrent_inputs=16,
)
@asgi_app()
def app():
from datasette.app import Datasette

print(DB_PATH)
ds = Datasette(files=[DB_PATH], settings={"sql_time_limit_ms": 10000})
asyncio.run(ds.invoke_startup())
return ds.app()

# ## Publishing to the web
@stub.local_entrypoint()
def run():
print("Prepping SQLite DB...")
prep_db.remote()


#### References
##### 1. https://github.com/modal-labs/modal-examples/blob/main/10_integrations/covid_datasette.py
Binary file modified tests/__pycache__/test_app.cpython-311-pytest-7.4.4.pyc
Binary file not shown.

0 comments on commit f9d4d5a

Please sign in to comment.