Я установил два маршрута с одним и тем же вызовом БД, один с использованием асинхронный маршрутизатор + двигатель, один использует sync + pymongo.
Асинхронный маршрут безумно медленный: в среднем требуется 27 секунд для ответа 300 пользователям (~ 60 запросов в секунду), поэтому я предполагаю, что Должно быть, я делаю здесь что-то не так. Пожалуйста, дайте мне знать, где я ошибаюсь! Маршрутизатор синхронизации pymongo работает очень быстро: время отклика для того же теста составляет 50 мс.
Код: Выделить всё
# db.py
client = AsyncIOMotorClient(
mongo_con_string,
)
sync_client = MongoClient(
mongo_con_string,
)
mongo_db = client["test"]
sync_mongo_db = sync_client["test"]
Код: Выделить всё
#views.py
@test_router.get("/test", status_code=200, response_description="")
async def get_articles():
collection = mongo_db[TEST_TABLE]
articles = await collection.find().to_list(1000)
articles_str = json.dumps(articles, default=str)
@test_router.get("/test-sync", status_code=200, response_description="")
def get_articles_sync():
collection = sync_mongo_db[TEST_TABLE]
articles = collection.find().to_list(1000)
articles_str = json.dumps(articles, default=str)
Код: Выделить всё
# Dockerfile
FROM python:3.11
WORKDIR /code
COPY ./api/requirements.txt /code/requirements.txt
RUN pip install --upgrade -r /code/requirements.txt
COPY ./api/app /code/app
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80", "--proxy-headers", "--workers", "10"]
Подробнее здесь: https://stackoverflow.com/questions/792 ... ync-routes