Commit graph

14 commits

Author SHA1 Message Date
Roland Tannous
08b5879101
fix: Ctrl+C not terminating backend on Linux (#4316)
* fix: Ctrl+C not breaking out of backend on Linux

threading.Event.wait() without a timeout blocks at the C level on
Linux, preventing Python from delivering SIGINT.  Use a 1-second
timeout loop so the interpreter can process pending signals.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-03-16 11:58:09 +04:00
Roland Tannous
0818f78617
Graceful shutdown on Windows (signal handlers for Ctrl+C) (#4306)
* fix: graceful shutdown on Windows (signal handlers for Ctrl+C)

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-03-16 03:01:15 +04:00
Daniel Han
928868f07d studio: auto-find free port if requested port is in use
If the requested port (default 8000) is already in use, auto-
increment and try the next port, up to 20 attempts. Prints a
message like "Port 8000 is in use, using port 8001 instead".

Previously, if port 8000 was busy, uvicorn would fail with
"[Errno 98] address already in use" and the studio would not
start. Now it gracefully finds the next free port.

Uses socket.bind() to check availability before starting uvicorn.
Cross-platform (Linux, macOS, Windows).
2026-03-15 05:24:06 -07:00
Roland Tannous
47654cb91c Final cleanup 2026-03-12 18:28:04 +00:00
Roland Tannous
a2baf80511 Update license headers 2026-03-12 17:23:10 +00:00
Roland Tannous
6f77c63229 refactor: remove project_root passing, use self-resolved paths and ~/.unsloth/studio
- Workers now compute backend_path and venv_t5 locally via Path(__file__)
- Moved .venv_t5 to ~/.unsloth/studio/.venv_t5
- Added ensure_studio_directories() call on server startup
- Expanded CLI studio command into sub-app with setup subcommand
2026-03-11 20:32:18 +00:00
Roland Tannous
817f2e8dcc feat: integrate structlog, configure workers for prod logging, and migrate print statements 2026-03-11 12:33:16 +00:00
Roland Tannous
d882678fe4 Add AGPL-3.0 SPDX headers to all source files 2026-03-09 20:17:45 +00:00
Roland Tannous
6b2a777f97 fix path in run_server 2026-02-14 05:06:17 +00:00
Roland Tannous
f07b919385 change default frontend path in run.py to studio/frontend/dist 2026-02-14 05:02:26 +00:00
Roland Tannous
5f155010f6 read external ips with fallback to standard notation 0.0.0.0 2026-02-13 10:28:20 +00:00
Roland Tannous
837596a9e7 feat: show external IP in startup banner 2026-02-13 10:23:12 +00:00
Roland Tannous
4c791bd5aa feat(datasets): check-format to return preview samples 2026-02-12 11:25:47 +00:00
Roland Tannous
544d6944d1 root studio folder 2026-02-02 09:13:49 +00:00
Renamed from backend/run.py (Browse further)