microsoft / microsoft/planetary-computer-apis
STAC API and Tiler not using gunicorn worker and worker configuration
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 129
- Forks
- 33
- Avg merge
- 2d 20h
- Merged PRs (30d)
- 1
Description
I just noticed that the Tiler API and STAC APIs are launching uvicorn directly to start FastAPI and not using gunicorn with a server worker.
This is fine for development, but for a production FastAPI instance it would create a queueing bottleneck for concurrent requests.
Secondly, there is no default worker processes and/or thread configuration for GUnicorn configured. This would significantly improvement throughput of the application (like a 4x improvement in requests/sec).
See https://www.uvicorn.org/deployment/#using-a-process-manager and https://fastapi.tiangolo.com/deployment/server-workers/
Spotted this in these places:
https://github.com/microsoft/planetary-computer-apis/blob/main/pctiler/Dockerfile#L47
https://github.com/microsoft/planetary-computer-apis/blob/main/pcstac/Dockerfile#L17
https://github.com/microsoft/planetary-computer-apis/blob/main/docker-compose.yml#L19
https://github.com/microsoft/planetary-computer-apis/blob/main/docker-compose.yml#L38
Happy to submit a PR with benchmark, unless I'm missing something
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing pctiler/Dockerfile, pcstac/Dockerfile, and the two service entries in docker-compose.yml, then compare their startup commands with the Uvicorn and FastAPI deployment guidance linked in the issue. Done means the production API services use the intended process manager and have a defined worker configuration; benchmarks may be added if they are part of the agreed scope.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, fastapi, python
- Domain
- api, backend, devops
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100