diff --git a/etc/run.sh b/etc/run.sh index d9109b6..1a3b6d7 100755 --- a/etc/run.sh +++ b/etc/run.sh @@ -13,8 +13,10 @@ if [ -n "${TEST}" ]; then exit $? fi +WORKERS=${WORKERS:-1} + if [ -n "${DEBUG}" ]; then - exec poetry run uvicorn main:app --host 0.0.0.0 --port ${PORT} --reload + exec poetry run gunicorn -k uvicorn.workers.UvicornWorker -b 0.0.0.0:${PORT} main:app --workers ${WORKERS} --reload else - exec poetry run uvicorn main:app --host 0.0.0.0 --port ${PORT} + exec poetry run gunicorn -k uvicorn.workers.UvicornWorker -b 0.0.0.0:${PORT} main:app --workers ${WORKERS} fi diff --git a/poetry.lock b/poetry.lock index 8435411..d3102ed 100644 --- a/poetry.lock +++ b/poetry.lock @@ -900,6 +900,27 @@ files = [ google-auth = ">=1.12.0" google-auth-oauthlib = ">=0.4.1" +[[package]] +name = "gunicorn" +version = "23.0.0" +description = "WSGI HTTP Server for UNIX" +optional = false +python-versions = ">=3.7" +files = [ + {file = "gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d"}, + {file = "gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec"}, +] + +[package.dependencies] +packaging = "*" + +[package.extras] +eventlet = ["eventlet (>=0.24.1,!=0.36.0)"] +gevent = ["gevent (>=1.4.0)"] +setproctitle = ["setproctitle"] +testing = ["coverage", "eventlet", "gevent", "pytest", "pytest-cov"] +tornado = ["tornado (>=0.2)"] + [[package]] name = "h11" version = "0.14.0" @@ -1837,6 +1858,8 @@ files = [ {file = "orjson-3.10.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:960db0e31c4e52fa0fc3ecbaea5b2d3b58f379e32a95ae6b0ebeaa25b93dfd34"}, {file = "orjson-3.10.6-cp312-none-win32.whl", hash = "sha256:a6ea7afb5b30b2317e0bee03c8d34c8181bc5a36f2afd4d0952f378972c4efd5"}, {file = "orjson-3.10.6-cp312-none-win_amd64.whl", hash = "sha256:874ce88264b7e655dde4aeaacdc8fd772a7962faadfb41abe63e2a4861abc3dc"}, + {file = "orjson-3.10.6-cp313-none-win32.whl", hash = "sha256:efdf2c5cde290ae6b83095f03119bdc00303d7a03b42b16c54517baa3c4ca3d0"}, + {file = "orjson-3.10.6-cp313-none-win_amd64.whl", hash = "sha256:8e190fe7888e2e4392f52cafb9626113ba135ef53aacc65cd13109eb9746c43e"}, {file = "orjson-3.10.6-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:66680eae4c4e7fc193d91cfc1353ad6d01b4801ae9b5314f17e11ba55e934183"}, {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:caff75b425db5ef8e8f23af93c80f072f97b4fb3afd4af44482905c9f588da28"}, {file = "orjson-3.10.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3722fddb821b6036fd2a3c814f6bd9b57a89dc6337b9924ecd614ebce3271394"}, @@ -3786,4 +3809,4 @@ test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", [metadata] lock-version = "2.0" python-versions = ">=3.11,<3.13" -content-hash = "3e5a00c77a5cfbd5d41703d04d7f3c323edfd3d8b7f15dcc49f399fee9486b85" +content-hash = "ebf39314c7e72c635ea381ee38a15ebbfadb2d5abeb4cfa41d6a4ebd7c5d2f9c" diff --git a/pyproject.toml b/pyproject.toml index 553caa7..9b8ef7b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,7 @@ iniconfig = "2.0.0" dialog-lib = "0.0.2.7" langserve = "0.2.0" sse-starlette = "2.1.0" +gunicorn = "^23.0.0" [tool.poetry.group.dev.dependencies]