--cache-size option, for controlling SQLite cache size

sqlite-cache-setting
Simon Willison 2018-03-20 18:25:08 -07:00
rodzic 56623e48da
commit 04476ead53
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 17E2DEA2588B7F52
2 zmienionych plików z 8 dodań i 3 usunięć

Wyświetl plik

@ -833,8 +833,8 @@ class RowView(RowTableShared):
class Datasette:
def __init__(
self, files, num_threads=3, cache_headers=True, page_size=100,
max_returned_rows=1000, sql_time_limit_ms=1000, cors=False,
inspect_data=None, metadata=None, sqlite_extensions=None,
max_returned_rows=1000, sql_time_limit_ms=1000, cache_size=None,
cors=False, inspect_data=None, metadata=None, sqlite_extensions=None,
template_dir=None, static_mounts=None):
self.files = files
self.num_threads = num_threads
@ -845,6 +845,7 @@ class Datasette:
self.page_size = page_size
self.max_returned_rows = max_returned_rows
self.sql_time_limit_ms = sql_time_limit_ms
self.cache_size = cache_size
self.cors = cors
self._inspect = inspect_data
self.metadata = metadata or {}
@ -901,6 +902,8 @@ class Datasette:
conn.enable_load_extension(True)
for extension in self.sqlite_extensions:
conn.execute("SELECT load_extension('{}')".format(extension))
if self.cache_size:
conn.execute('PRAGMA cache_size=-{}'.format(self.cache_size))
def inspect(self):
if not self._inspect:

Wyświetl plik

@ -225,6 +225,7 @@ def package(files, tag, metadata, extra_options, branch, template_dir, static, *
@click.option('--page_size', default=100, help='Page size - default is 100')
@click.option('--max_returned_rows', default=1000, help='Max allowed rows to return at once - default is 1000. Set to 0 to disable check entirely.')
@click.option('--sql_time_limit_ms', default=1000, help='Max time allowed for SQL queries in ms')
@click.option('--cache_size', default=None, help='SQLite per-database cache size in KB')
@click.option(
'sqlite_extensions', '--load-extension', envvar='SQLITE_EXTENSIONS', multiple=True,
type=click.Path(exists=True, resolve_path=True), help='Path to a SQLite extension to load'
@ -233,7 +234,7 @@ def package(files, tag, metadata, extra_options, branch, template_dir, static, *
@click.option('-m', '--metadata', type=click.File(mode='r'), help='Path to JSON file containing license/source metadata')
@click.option('--template-dir', type=click.Path(exists=True, file_okay=False, dir_okay=True), help='Path to directory containing custom templates')
@click.option('--static', type=StaticMount(), help='mountpoint:path-to-directory for serving static files', multiple=True)
def serve(files, host, port, debug, reload, cors, page_size, max_returned_rows, sql_time_limit_ms, sqlite_extensions, inspect_file, metadata, template_dir, static):
def serve(files, host, port, debug, reload, cors, page_size, max_returned_rows, sql_time_limit_ms, cache_size, sqlite_extensions, inspect_file, metadata, template_dir, static):
"""Serve up specified SQLite database files with a web UI"""
if reload:
import hupper
@ -257,6 +258,7 @@ def serve(files, host, port, debug, reload, cors, page_size, max_returned_rows,
page_size=page_size,
max_returned_rows=max_returned_rows,
sql_time_limit_ms=sql_time_limit_ms,
cache_size=cache_size,
inspect_data=inspect_data,
metadata=metadata_data,
sqlite_extensions=sqlite_extensions,