Задать вопрос
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 секунд?
  • Вопрос задан
  • 580 просмотров
Подписаться 1 Средний 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
02 февр. 2025, в 19:02
50000 руб./за проект
02 февр. 2025, в 18:10
3000 руб./за проект
02 февр. 2025, в 17:00
350 руб./в час