Пытаюсь задеплоить FastAPI приложение. Вот `Dockerfile`:
FROM python:3.12
RUN mkdir /webapp
WORKDIR /webapp
COPY requirements.txt .
RUN pip3 install --upgrade setuptools
RUN pip3 install -r requirements.txt
COPY . .
CMD gunicorn api:app --bind 0.0.0.0:8000 --worker-class uvicorn.workers.UvicornWorker
```
И `docker-compose`:
```
services:
mongo:
image: mongo
container_name: mongodb
ports:
- 5858:5858
webapp:
build:
context: ./webapp/.
container_name: webapp
ports:
- 9999:8000
depends_on:
- mongo
bot:
build: ./bot/.
image: pauliness1/messager-bot:latest
command: sh -c "python3 -m run"
env_file:
- ./bot/.env
restart: always
depends_on:
- webapp
server:
image: nginx
depends_on:
- webapp
- bot
ports:
- 1100:80
```
Но когда перехожу на localhost:9999 вылезает ошибка:
TypeError: FastAPI.__call__() missing 1 required positional argument: 'send'.
Посмотрел логи, вижу, что используется sync worker:
webapp | [2024-08-04 11:52:04 +0000] [6] [INFO] Using worker: sync.
А wsgi нельзя использовать с FastAPI, только asgi. Но я же вроде прописал в Dockerfile строку
uvicorn.workers.UvicornWorker
. Так должно работать? А воркер все равно синхронный подключается... что я делаю не так?