Почему python клиент-клиент MongoDB намного медленнее, чем Pymon go, при запуске со звездочкой? - PullRequest
0 голосов
/ 22 февраля 2020

У меня есть веб-приложение, написанное с python и asyn c framework Starlette (https://www.starlette.io/), мне нужно подключиться к MongoDB, поэтому я установил asyn c pymon go драйвер: двигатель (https://motor.readthedocs.io/en/stable/) версия 2.1.0

И у меня есть некоторый псевдокод, подобный этому:


motor_client = motor.motor_asyncio.AsyncIOMotorClient(...)
pymongo_client = pymongo.MongoClient(...)

class BlogList(HTTPEndpoint):
    async def get(self, request):
        blog_list = [item async for item in motor_client.blog.find(condition)]
        # blog_list = list(pymongo_client.blog.find(condition))
        data = {
            "request": request,
            "blogs": blog_list,
        }
        return RenderPageResponse("index.html", data)

Для строки blog_list здесь я сравнил его с wrk -t10 -d10 -c100 http://localhost:8080/blog:

  • Если я использую motor_client с await, результат будет около "1500 запросов / сек c"
  • Если я изменю его на pymongo_client (режим syn c), результат будет примерно "1900 запросов / сек c"

Не должен асин c режим с двигателем быть быстрее режима syn c с pymon go? Мне интересно, почему производительность намного хуже при использовании двигателя (asyn c, 1500 req / s) по сравнению с pymon go (syn c, 1900 req / s)?

Другая информация: я запускаю свое приложение starlette с помощью gunicorn -w 4 -k uvicorn.workers.UvicornWorker myblog:app и просто переключаю эти 2 строки для выполнения теста wrk.

Я выполнил поиск, но не могу найти сообщения, говорящие об этом мне так интересно, я что-то пропустил? Спасибо за любую помощь, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...