Задать вопрос
Pavlmir
@Pavlmir
Любознательный

Что нужно сделать чтобы заработала асинхронная выборка данных в Clickhouse?

from datetime import datetime

import asyncio
from aiohttp import ClientSession
from aiochclient import ChClient


async def some_query(client, sql):
     print(f"Start {i} - {datetime.now()}")      
     all_rows = await client.fetch(sql, json=True)
     print(f"End {i}")
        
     return all_rows

async def compete():
    tasks = []
    async with ClientSession() as session:
        my_client = ChClient(session, url=f'http://{USER}:{PWD}@{HOST}:{PORT}/', 
                             database=DB)
        for i in range(1, 3):
            task = asyncio.create_task(self.some_query(my_client, i, "SELECT * FROM table"))
            tasks.append(task)
            
        await asyncio.gather(*tasks)

asyncio.run(compete())


Код работает, но когда запрос поступает в базу данных, он выполняется там синхронно.
Например, 3 запроса выполняются за 180 секунд, и нет никакой разницы, происходит ли это синхронно или асинхронно. Правильно ли я понимаю, что если я запускаю код асинхронно, то 3 запроса должны быть выполнены примерно за 60 секунд?
  • Вопрос задан
  • 558 просмотров
Подписаться 1 Средний 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
26 дек. 2024, в 15:04
3000 руб./за проект
26 дек. 2024, в 14:50
2000 руб./за проект
26 дек. 2024, в 14:40
15000 руб./за проект