Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions lightly_studio/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ start-e2e: build
@echo "Starting server for e2e tests..."
uv run e2e-tests/index_dataset_for_end2end_ui_tests.py

.PHONY: start-coco-10k
start-coco-10k: build
@echo "Starting server for e2e tests with COCO 10k dataset..."
uv run e2e-tests/index_coco_10k.py

.PHONY: start-e2e-with-captions
start-e2e-with-captions: build
@echo "Starting server for e2e tests with captions..."
Expand Down
15 changes: 13 additions & 2 deletions lightly_studio/src/lightly_studio/api/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,19 @@ def __init__(self, host: str, port: int) -> None:

def start(self) -> None:
"""Start the API server using Uvicorn."""
# start the app
uvicorn.run(app, host=self.host, port=self.port, http="h11")
# start the app with connection limits and timeouts
uvicorn.run(
app,
host=self.host,
port=self.port,
http="h11",
# https://uvicorn.dev/settings/#resource-limits
limit_concurrency=100, # Max concurrent connections
limit_max_requests=10000, # Max requests before worker restart
# https://uvicorn.dev/settings/#timeouts
timeout_keep_alive=5, # Keep-alive timeout in seconds
timeout_graceful_shutdown=30, # Graceful shutdown timeout
)


def _get_available_port(host: str, preferred_port: int, max_tries: int = 50) -> int:
Expand Down
9 changes: 8 additions & 1 deletion lightly_studio/src/lightly_studio/db_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,14 @@ def __init__(
self._engine_url = engine_url if engine_url else "duckdb:///lightly_studio.db"
if cleanup_existing:
_cleanup_database_file(engine_url=self._engine_url)
self._engine = create_engine(url=self._engine_url, poolclass=poolclass)
# Total available connections = pool_size + max_overflow = 20 + 40 = 60
# (default is (pool_size=5, max_overflow=10))
self._engine = create_engine(
url=self._engine_url,
poolclass=poolclass,
pool_size=10,
max_overflow=40,
)
SQLModel.metadata.create_all(self._engine)

@contextmanager
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,4 @@
});
</script>

<div bind:this={triggerRef}></div>
<div bind:this={triggerRef} style="height: 1px; width: 1px;"></div>
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ const buildRequestBody = (params: ImagesInfiniteParams, pageParam: number): Read
const baseBody: ReadImagesRequest = {
pagination: {
offset: pageParam,
limit: 100
limit: 20
},
text_embedding: params.text_embedding,
filters: {
Expand Down
Loading