Save of settings failed #63

Closed
opened 2026-04-22 14:38:01 +00:00 by SaschaFuksa · 0 comments
Owner

I wanted to save settings in the settings panel.
Response UI: Failed to save

Response Docker Log: whisper-transcribe-1 | Traceback (most recent call last):
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 421, in run_asgi
whisper-transcribe-1 | result = await app( # type: ignore[func-returns-value]
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 56, in call
whisper-transcribe-1 | return await self.app(scope, receive, send)
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/applications.py", line 1159, in call
whisper-transcribe-1 | await super().call(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/applications.py", line 90, in call
whisper-transcribe-1 | await self.middleware_stack(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in call
whisper-transcribe-1 | raise exc
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in call
whisper-transcribe-1 | await self.app(scope, receive, _send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 96, in call
whisper-transcribe-1 | await self.simple_response(scope, receive, send, request_headers=headers)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 154, in simple_response
whisper-transcribe-1 | await self.app(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 63, in call
whisper-transcribe-1 | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
whisper-transcribe-1 | raise exc
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
whisper-transcribe-1 | await app(scope, receive, sender)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in call
whisper-transcribe-1 | await self.app(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 660, in call
whisper-transcribe-1 | await self.middleware_stack(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 680, in app
whisper-transcribe-1 | await route.handle(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 276, in handle
whisper-transcribe-1 | await self.app(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 134, in app
whisper-transcribe-1 | await wrap_app_handling_exceptions(app, request)(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
whisper-transcribe-1 | raise exc
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
whisper-transcribe-1 | await app(scope, receive, sender)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 120, in app
whisper-transcribe-1 | response = await f(request)
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 674, in app
whisper-transcribe-1 | raw_response = await run_endpoint_function(
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 328, in run_endpoint_function
whisper-transcribe-1 | return await dependant.call(**values)
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/app/src/api/routes.py", line 439, in update_settings
whisper-transcribe-1 | config_path.write_text(yaml.dump(existing, default_flow_style=False, sort_keys=False))
whisper-transcribe-1 | File "/usr/lib/python3.11/pathlib.py", line 1078, in write_text
whisper-transcribe-1 | with self.open(mode='w', encoding=encoding, errors=errors, newline=newline) as f:
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/usr/lib/python3.11/pathlib.py", line 1044, in open
whisper-transcribe-1 | return io.open(self, mode, buffering, encoding, errors, newline)
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | OSError: [Errno 30] Read-only file system: 'settings.yaml'
whisper-transcribe-1 | INFO: 172.24.0.1:56326 - "PUT /api/v1/settings HTTP/1.1" 500 Internal Server Error
whisper-transcribe-1 | ERROR: Exception in ASGI application
whisper-transcribe-1 | Traceback (most recent call last):
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 421, in run_asgi
whisper-transcribe-1 | result = await app( # type: ignore[func-returns-value]
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 56, in call
whisper-transcribe-1 | return await self.app(scope, receive, send)
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/applications.py", line 1159, in call
whisper-transcribe-1 | await super().call(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/applications.py", line 90, in call
whisper-transcribe-1 | await self.middleware_stack(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in call
whisper-transcribe-1 | raise exc
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in call
whisper-transcribe-1 | await self.app(scope, receive, _send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 96, in call
whisper-transcribe-1 | await self.simple_response(scope, receive, send, request_headers=headers)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 154, in simple_response
whisper-transcribe-1 | await self.app(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 63, in call
whisper-transcribe-1 | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
whisper-transcribe-1 | raise exc
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
whisper-transcribe-1 | await app(scope, receive, sender)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in call
whisper-transcribe-1 | await self.app(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 660, in call
whisper-transcribe-1 | await self.middleware_stack(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 680, in app
whisper-transcribe-1 | await route.handle(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 276, in handle
whisper-transcribe-1 | await self.app(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 134, in app
whisper-transcribe-1 | await wrap_app_handling_exceptions(app, request)(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
whisper-transcribe-1 | raise exc
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
whisper-transcribe-1 | await app(scope, receive, sender)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 120, in app
whisper-transcribe-1 | response = await f(request)
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 674, in app
whisper-transcribe-1 | raw_response = await run_endpoint_function(
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 328, in run_endpoint_function
whisper-transcribe-1 | return await dependant.call(**values)
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/app/src/api/routes.py", line 439, in update_settings
whisper-transcribe-1 | config_path.write_text(yaml.dump(existing, default_flow_style=False, sort_keys=False))
whisper-transcribe-1 | File "/usr/lib/python3.11/pathlib.py", line 1078, in write_text
whisper-transcribe-1 | with self.open(mode='w', encoding=encoding, errors=errors, newline=newline) as f:
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/usr/lib/python3.11/pathlib.py", line 1044, in open
whisper-transcribe-1 | return io.open(self, mode, buffering, encoding, errors, newline)
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | OSError: [Errno 30] Read-only file system: 'settings.yaml'
whisper-transcribe-1 | INFO: 172.24.0.1:57638 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK
whisper-transcribe-1 | INFO: 172.24.0.1:57648 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK
whisper-transcribe-1 | INFO: 127.0.0.1:47792 - "GET /api/v1/health HTTP/1.1" 200 OK
whisper-transcribe-1 | INFO: 172.24.0.1:57656 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK
whisper-transcribe-1 | INFO: 172.24.0.1:57658 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK
whisper-transcribe-1 | INFO: 172.24.0.1:57670 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK
whisper-transcribe-1 | INFO: 172.24.0.1:57676 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK
whisper-transcribe-1 | INFO: 172.24.0.1:57688 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK
whisper-transcribe-1 | INFO: 172.24.0.1:57692 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK
whisper-transcribe-1 | INFO: 127.0.0.1:37284 - "GET /api/v1/health HTTP/1.1" 200 OK
whisper-transcribe-1 | INFO: 172.24.0.1:45238 - "GET /api/v1/settings HTTP/1.1" 200 OK
whisper-transcribe-1 | INFO: 172.24.0.1:45246 - "PUT /api/v1/settings HTTP/1.1" 500 Internal Server Error
whisper-transcribe-1 | ERROR: Exception in ASGI application
whisper-transcribe-1 | Traceback (most recent call last):
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 421, in run_asgi
whisper-transcribe-1 | result = await app( # type: ignore[func-returns-value]
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 56, in call
whisper-transcribe-1 | return await self.app(scope, receive, send)
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/applications.py", line 1159, in call
whisper-transcribe-1 | await super().call(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/applications.py", line 90, in call
whisper-transcribe-1 | await self.middleware_stack(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in call
whisper-transcribe-1 | raise exc
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in call
whisper-transcribe-1 | await self.app(scope, receive, _send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 96, in call
whisper-transcribe-1 | await self.simple_response(scope, receive, send, request_headers=headers)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 154, in simple_response
whisper-transcribe-1 | await self.app(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 63, in call
whisper-transcribe-1 | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
whisper-transcribe-1 | raise exc
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
whisper-transcribe-1 | await app(scope, receive, sender)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in call
whisper-transcribe-1 | await self.app(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 660, in call
whisper-transcribe-1 | await self.middleware_stack(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 680, in app
whisper-transcribe-1 | await route.handle(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 276, in handle
whisper-transcribe-1 | await self.app(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 134, in app
whisper-transcribe-1 | await wrap_app_handling_exceptions(app, request)(scope, receive, send)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
whisper-transcribe-1 | raise exc
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
whisper-transcribe-1 | await app(scope, receive, sender)
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 120, in app
whisper-transcribe-1 | response = await f(request)
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 674, in app
whisper-transcribe-1 | raw_response = await run_endpoint_function(
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 328, in run_endpoint_function
whisper-transcribe-1 | return await dependant.call(**values)
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/app/src/api/routes.py", line 439, in update_settings
whisper-transcribe-1 | config_path.write_text(yaml.dump(existing, default_flow_style=False, sort_keys=False))
whisper-transcribe-1 | File "/usr/lib/python3.11/pathlib.py", line 1078, in write_text
whisper-transcribe-1 | with self.open(mode='w', encoding=encoding, errors=errors, newline=newline) as f:
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | File "/usr/lib/python3.11/pathlib.py", line 1044, in open
whisper-transcribe-1 | return io.open(self, mode, buffering, encoding, errors, newline)
whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
whisper-transcribe-1 | OSError: [Errno 30] Read-only file system: 'settings.yaml'

Response Browser Console:
(index):1582
PUT https://192.168.178.50/api/v1/settings 500 (Internal Server Error)
(anonymous) @ (index):1582

Save of settings shall work. Maybe settings.yaml is readonly, so only update the current config classes. Maybe it could be difficult to override settings.yaml while docker runs. So it would be okay to only update config model data on runtime to accept setting changes.

I wanted to save settings in the settings panel. Response UI: ❌ Failed to save Response Docker Log: whisper-transcribe-1 | Traceback (most recent call last): whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 421, in run_asgi whisper-transcribe-1 | result = await app( # type: ignore[func-returns-value] whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 56, in __call__ whisper-transcribe-1 | return await self.app(scope, receive, send) whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/applications.py", line 1159, in __call__ whisper-transcribe-1 | await super().__call__(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/applications.py", line 90, in __call__ whisper-transcribe-1 | await self.middleware_stack(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__ whisper-transcribe-1 | raise exc whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__ whisper-transcribe-1 | await self.app(scope, receive, _send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 96, in __call__ whisper-transcribe-1 | await self.simple_response(scope, receive, send, request_headers=headers) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 154, in simple_response whisper-transcribe-1 | await self.app(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 63, in __call__ whisper-transcribe-1 | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app whisper-transcribe-1 | raise exc whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app whisper-transcribe-1 | await app(scope, receive, sender) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__ whisper-transcribe-1 | await self.app(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 660, in __call__ whisper-transcribe-1 | await self.middleware_stack(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 680, in app whisper-transcribe-1 | await route.handle(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 276, in handle whisper-transcribe-1 | await self.app(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 134, in app whisper-transcribe-1 | await wrap_app_handling_exceptions(app, request)(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app whisper-transcribe-1 | raise exc whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app whisper-transcribe-1 | await app(scope, receive, sender) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 120, in app whisper-transcribe-1 | response = await f(request) whisper-transcribe-1 | ^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 674, in app whisper-transcribe-1 | raw_response = await run_endpoint_function( whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 328, in run_endpoint_function whisper-transcribe-1 | return await dependant.call(**values) whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/app/src/api/routes.py", line 439, in update_settings whisper-transcribe-1 | config_path.write_text(yaml.dump(existing, default_flow_style=False, sort_keys=False)) whisper-transcribe-1 | File "/usr/lib/python3.11/pathlib.py", line 1078, in write_text whisper-transcribe-1 | with self.open(mode='w', encoding=encoding, errors=errors, newline=newline) as f: whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/usr/lib/python3.11/pathlib.py", line 1044, in open whisper-transcribe-1 | return io.open(self, mode, buffering, encoding, errors, newline) whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | OSError: [Errno 30] Read-only file system: 'settings.yaml' whisper-transcribe-1 | INFO: 172.24.0.1:56326 - "PUT /api/v1/settings HTTP/1.1" 500 Internal Server Error whisper-transcribe-1 | ERROR: Exception in ASGI application whisper-transcribe-1 | Traceback (most recent call last): whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 421, in run_asgi whisper-transcribe-1 | result = await app( # type: ignore[func-returns-value] whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 56, in __call__ whisper-transcribe-1 | return await self.app(scope, receive, send) whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/applications.py", line 1159, in __call__ whisper-transcribe-1 | await super().__call__(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/applications.py", line 90, in __call__ whisper-transcribe-1 | await self.middleware_stack(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__ whisper-transcribe-1 | raise exc whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__ whisper-transcribe-1 | await self.app(scope, receive, _send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 96, in __call__ whisper-transcribe-1 | await self.simple_response(scope, receive, send, request_headers=headers) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 154, in simple_response whisper-transcribe-1 | await self.app(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 63, in __call__ whisper-transcribe-1 | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app whisper-transcribe-1 | raise exc whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app whisper-transcribe-1 | await app(scope, receive, sender) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__ whisper-transcribe-1 | await self.app(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 660, in __call__ whisper-transcribe-1 | await self.middleware_stack(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 680, in app whisper-transcribe-1 | await route.handle(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 276, in handle whisper-transcribe-1 | await self.app(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 134, in app whisper-transcribe-1 | await wrap_app_handling_exceptions(app, request)(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app whisper-transcribe-1 | raise exc whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app whisper-transcribe-1 | await app(scope, receive, sender) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 120, in app whisper-transcribe-1 | response = await f(request) whisper-transcribe-1 | ^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 674, in app whisper-transcribe-1 | raw_response = await run_endpoint_function( whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 328, in run_endpoint_function whisper-transcribe-1 | return await dependant.call(**values) whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/app/src/api/routes.py", line 439, in update_settings whisper-transcribe-1 | config_path.write_text(yaml.dump(existing, default_flow_style=False, sort_keys=False)) whisper-transcribe-1 | File "/usr/lib/python3.11/pathlib.py", line 1078, in write_text whisper-transcribe-1 | with self.open(mode='w', encoding=encoding, errors=errors, newline=newline) as f: whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/usr/lib/python3.11/pathlib.py", line 1044, in open whisper-transcribe-1 | return io.open(self, mode, buffering, encoding, errors, newline) whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | OSError: [Errno 30] Read-only file system: 'settings.yaml' whisper-transcribe-1 | INFO: 172.24.0.1:57638 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK whisper-transcribe-1 | INFO: 172.24.0.1:57648 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK whisper-transcribe-1 | INFO: 127.0.0.1:47792 - "GET /api/v1/health HTTP/1.1" 200 OK whisper-transcribe-1 | INFO: 172.24.0.1:57656 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK whisper-transcribe-1 | INFO: 172.24.0.1:57658 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK whisper-transcribe-1 | INFO: 172.24.0.1:57670 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK whisper-transcribe-1 | INFO: 172.24.0.1:57676 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK whisper-transcribe-1 | INFO: 172.24.0.1:57688 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK whisper-transcribe-1 | INFO: 172.24.0.1:57692 - "GET /api/v1/chunks?page=1&page_size=10 HTTP/1.1" 200 OK whisper-transcribe-1 | INFO: 127.0.0.1:37284 - "GET /api/v1/health HTTP/1.1" 200 OK whisper-transcribe-1 | INFO: 172.24.0.1:45238 - "GET /api/v1/settings HTTP/1.1" 200 OK whisper-transcribe-1 | INFO: 172.24.0.1:45246 - "PUT /api/v1/settings HTTP/1.1" 500 Internal Server Error whisper-transcribe-1 | ERROR: Exception in ASGI application whisper-transcribe-1 | Traceback (most recent call last): whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 421, in run_asgi whisper-transcribe-1 | result = await app( # type: ignore[func-returns-value] whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 56, in __call__ whisper-transcribe-1 | return await self.app(scope, receive, send) whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/applications.py", line 1159, in __call__ whisper-transcribe-1 | await super().__call__(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/applications.py", line 90, in __call__ whisper-transcribe-1 | await self.middleware_stack(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__ whisper-transcribe-1 | raise exc whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__ whisper-transcribe-1 | await self.app(scope, receive, _send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 96, in __call__ whisper-transcribe-1 | await self.simple_response(scope, receive, send, request_headers=headers) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/cors.py", line 154, in simple_response whisper-transcribe-1 | await self.app(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 63, in __call__ whisper-transcribe-1 | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app whisper-transcribe-1 | raise exc whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app whisper-transcribe-1 | await app(scope, receive, sender) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__ whisper-transcribe-1 | await self.app(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 660, in __call__ whisper-transcribe-1 | await self.middleware_stack(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 680, in app whisper-transcribe-1 | await route.handle(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/routing.py", line 276, in handle whisper-transcribe-1 | await self.app(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 134, in app whisper-transcribe-1 | await wrap_app_handling_exceptions(app, request)(scope, receive, send) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app whisper-transcribe-1 | raise exc whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app whisper-transcribe-1 | await app(scope, receive, sender) whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 120, in app whisper-transcribe-1 | response = await f(request) whisper-transcribe-1 | ^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 674, in app whisper-transcribe-1 | raw_response = await run_endpoint_function( whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/app/.venv/lib/python3.11/site-packages/fastapi/routing.py", line 328, in run_endpoint_function whisper-transcribe-1 | return await dependant.call(**values) whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/app/src/api/routes.py", line 439, in update_settings whisper-transcribe-1 | config_path.write_text(yaml.dump(existing, default_flow_style=False, sort_keys=False)) whisper-transcribe-1 | File "/usr/lib/python3.11/pathlib.py", line 1078, in write_text whisper-transcribe-1 | with self.open(mode='w', encoding=encoding, errors=errors, newline=newline) as f: whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | File "/usr/lib/python3.11/pathlib.py", line 1044, in open whisper-transcribe-1 | return io.open(self, mode, buffering, encoding, errors, newline) whisper-transcribe-1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ whisper-transcribe-1 | OSError: [Errno 30] Read-only file system: 'settings.yaml' Response Browser Console: (index):1582 PUT https://192.168.178.50/api/v1/settings 500 (Internal Server Error) (anonymous) @ (index):1582 Save of settings shall work. Maybe settings.yaml is readonly, so only update the current config classes. Maybe it could be difficult to override settings.yaml while docker runs. So it would be okay to only update config model data on runtime to accept setting changes.
Tasch self-assigned this 2026-04-22 15:09:54 +00:00
Tasch added reference batch/63 2026-04-22 15:12:39 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Tasch/whisper-transcribe#63
No description provided.