[+] improve rest api for summarizer
1. refactor out dependency logic into dependencies; 2. fix input schema for summarizer; 3. fix early app initialization before uvicorn sets logging; 4. add manual basicConfig call; 5. update default host and port for fastapi server; 6. add pyright watch mode;
This commit is contained in:
parent
e82586e08c
commit
5568c458c2
11
deps/test-task-2025-07-17-v2/Makefile
vendored
11
deps/test-task-2025-07-17-v2/Makefile
vendored
@ -35,11 +35,18 @@ venv:
|
||||
-p $(ENV_PATH) \
|
||||
-r requirements.txt
|
||||
|
||||
PYRIGHT_ARGS ?= --threads 3
|
||||
|
||||
pyright:
|
||||
$(ENV_PATH)/bin/python3 -m pyright \
|
||||
-p pyproject.toml \
|
||||
--threads 3 \
|
||||
--pythonpath $(PYTHON_PATH)
|
||||
--pythonpath $(PYTHON_PATH) \
|
||||
$(PYRIGHT_ARGS)
|
||||
|
||||
pyright_watch:
|
||||
make \
|
||||
PYRIGHT_ARGS=-w \
|
||||
pyright
|
||||
|
||||
ruff_check:
|
||||
$(ENV_PATH)/bin/python3 -m ruff \
|
||||
|
@ -41,11 +41,15 @@ services:
|
||||
<<: *web
|
||||
image: online.fxreader.pr34.test_task_2025_07_17_v1:dev
|
||||
env_file: .env/summarizer.patched.env
|
||||
ports:
|
||||
- 127.0.0.1:9003:80
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '4'
|
||||
memory: 3068M
|
||||
volumes:
|
||||
- ~/.cache/huggingface/hub:/root/.cache/huggingface/hub:ro
|
||||
|
||||
postgresql:
|
||||
image: docker.io/postgres:14.18-bookworm@sha256:c0aab7962b283cf24a0defa5d0d59777f5045a7be59905f21ba81a20b1a110c9
|
||||
|
@ -45,7 +45,7 @@ RUN \
|
||||
--break-system-packages \
|
||||
--no-index \
|
||||
-f releases/whl \
|
||||
'online.fxreader.pr34.test_task_2025_07_17_v2==0.1.5'
|
||||
'online.fxreader.pr34.test_task_2025_07_17_v2==0.1.8'
|
||||
|
||||
ENTRYPOINT ["tini", "--"]
|
||||
CMD [ \
|
||||
|
@ -1 +1,3 @@
|
||||
APPS=["online.fxreader.pr34.test_task_2025_07_17_v2.transform.app:get_app_router:"]
|
||||
UVICORN_HOST=0.0.0.0
|
||||
UVICORN_PORT=80
|
||||
|
2
deps/test-task-2025-07-17-v2/pyproject.toml
vendored
2
deps/test-task-2025-07-17-v2/pyproject.toml
vendored
@ -9,7 +9,7 @@ classifiers = [
|
||||
]
|
||||
|
||||
name = 'online.fxreader.pr34.test_task_2025_07_17_v2'
|
||||
version = '0.1.5'
|
||||
version = '0.1.8'
|
||||
|
||||
dependencies = [
|
||||
'alembic',
|
||||
|
@ -54,7 +54,9 @@ def create_app() -> fastapi.FastAPI:
|
||||
|
||||
app = fastapi.FastAPI()
|
||||
|
||||
logger.info(dict(msg='started loading apps'))
|
||||
for app_config in APISettings.singleton().apps:
|
||||
logger.info(dict(msg='start loading app = {}'.format(app_config)))
|
||||
app_module, app_method, app_prefix = app_config.split(':')
|
||||
|
||||
app_router = cast(
|
||||
@ -72,6 +74,8 @@ def create_app() -> fastapi.FastAPI:
|
||||
prefix=app_prefix,
|
||||
# prefix='/',
|
||||
)
|
||||
logger.info(dict(msg='done loading app = {}'.format(app_config)))
|
||||
logger.info(dict(msg='done loading apps'))
|
||||
|
||||
# app.websocket(
|
||||
# '/tickers/',
|
||||
@ -86,10 +90,13 @@ def create_app() -> fastapi.FastAPI:
|
||||
|
||||
|
||||
def run(args: list[str]):
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
log_config = copy.deepcopy(uvicorn.config.LOGGING_CONFIG)
|
||||
|
||||
uvicorn.run(
|
||||
create_app(),
|
||||
# create_app(),
|
||||
create_app,
|
||||
host=APISettings.singleton().uvicorn_host,
|
||||
port=APISettings.singleton().uvicorn_port,
|
||||
loop='uvloop',
|
||||
|
14
deps/test-task-2025-07-17-v2/python/online/fxreader/pr34/test_task_2025_07_17_v2/transform/app.py
vendored
14
deps/test-task-2025-07-17-v2/python/online/fxreader/pr34/test_task_2025_07_17_v2/transform/app.py
vendored
@ -4,21 +4,11 @@ import fastapi
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
from . import views
|
||||
from .worker import Summarizer
|
||||
|
||||
from .dependencies import summarizer_dependency
|
||||
|
||||
from typing import (Annotated,)
|
||||
|
||||
async def create_summarizer(
|
||||
) -> Summarizer:
|
||||
return Summarizer()
|
||||
|
||||
async def summarizer_dependency(
|
||||
summarizer: Annotated[
|
||||
Summarizer, fastapi.Depends(create_summarizer)
|
||||
]
|
||||
) -> None:
|
||||
pass
|
||||
|
||||
def get_app_router() -> fastapi.APIRouter:
|
||||
logger.info(dict(msg='started'))
|
||||
router = fastapi.APIRouter(
|
||||
|
19
deps/test-task-2025-07-17-v2/python/online/fxreader/pr34/test_task_2025_07_17_v2/transform/dependencies.py
vendored
Normal file
19
deps/test-task-2025-07-17-v2/python/online/fxreader/pr34/test_task_2025_07_17_v2/transform/dependencies.py
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
import logging
|
||||
import fastapi
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
from .worker import Summarizer
|
||||
|
||||
from typing import (Annotated,)
|
||||
|
||||
async def create_summarizer(
|
||||
) -> Summarizer:
|
||||
return Summarizer()
|
||||
|
||||
async def summarizer_dependency(
|
||||
summarizer: Annotated[
|
||||
Summarizer, fastapi.Depends(create_summarizer)
|
||||
]
|
||||
) -> None:
|
||||
pass
|
3
deps/test-task-2025-07-17-v2/python/online/fxreader/pr34/test_task_2025_07_17_v2/transform/schema.py
vendored
3
deps/test-task-2025-07-17-v2/python/online/fxreader/pr34/test_task_2025_07_17_v2/transform/schema.py
vendored
@ -2,3 +2,6 @@ import pydantic
|
||||
|
||||
class Summary(pydantic.BaseModel):
|
||||
data: list[str]
|
||||
|
||||
class SummaryRequest(pydantic.BaseModel):
|
||||
data: list[str]
|
||||
|
16
deps/test-task-2025-07-17-v2/python/online/fxreader/pr34/test_task_2025_07_17_v2/transform/views.py
vendored
16
deps/test-task-2025-07-17-v2/python/online/fxreader/pr34/test_task_2025_07_17_v2/transform/views.py
vendored
@ -3,19 +3,25 @@ import fastapi
|
||||
from typing import (Annotated, Any,)
|
||||
from . import schema
|
||||
from .worker import Summarizer
|
||||
from .dependencies import create_summarizer
|
||||
|
||||
router = fastapi.APIRouter()
|
||||
|
||||
@router.post('summarize')
|
||||
@router.post(
|
||||
'/summarize',
|
||||
# response_model=schema.Summary,
|
||||
)
|
||||
async def summarize(
|
||||
data: Annotated[
|
||||
list[str],
|
||||
request: Annotated[
|
||||
schema.SummaryRequest,
|
||||
fastapi.Body(),
|
||||
],
|
||||
summarizer: Summarizer,
|
||||
summarizer: Annotated[
|
||||
Summarizer, fastapi.Depends(create_summarizer)
|
||||
]
|
||||
) -> schema.Summary:
|
||||
return schema.Summary(
|
||||
data=summarizer.summarize(
|
||||
data,
|
||||
request.data,
|
||||
)
|
||||
)
|
||||
|
BIN
deps/test-task-2025-07-17-v2/releases/whl/online_fxreader_pr34_test_task_2025_07_17_v2-0.1.6-py3-none-any.whl
(Stored with Git LFS)
vendored
Normal file
BIN
deps/test-task-2025-07-17-v2/releases/whl/online_fxreader_pr34_test_task_2025_07_17_v2-0.1.6-py3-none-any.whl
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
deps/test-task-2025-07-17-v2/releases/whl/online_fxreader_pr34_test_task_2025_07_17_v2-0.1.7-py3-none-any.whl
(Stored with Git LFS)
vendored
Normal file
BIN
deps/test-task-2025-07-17-v2/releases/whl/online_fxreader_pr34_test_task_2025_07_17_v2-0.1.7-py3-none-any.whl
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
BIN
deps/test-task-2025-07-17-v2/releases/whl/online_fxreader_pr34_test_task_2025_07_17_v2-0.1.8-py3-none-any.whl
(Stored with Git LFS)
vendored
Normal file
BIN
deps/test-task-2025-07-17-v2/releases/whl/online_fxreader_pr34_test_task_2025_07_17_v2-0.1.8-py3-none-any.whl
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user