184 похожих чатов

Все привет Подскажите как правильно работать с питонячей библиотекой для взаимодействия

с кликом. Задача простая - просто пулять insert as select from s3 и отслеживать чтобы этот запрос успешно выполнился

Сначала делал через def execute(self, query

, но оно получается раьотает даже если сам запрос на сервере отработал и падает только по таймауту. Те как будто не отслеживает статус выполнения запроса в клике.

Далее заюзал def execute_with_progress(

который возвращает tuple с кол-вом обоаботанных строк + общим количеством строк. И вроде то что нужно и можно сделать cancel клиенту если num_rows = processed rows вроде такого

for num_rows, total_rows in progress:
print(f"{num_rows} was processed from {total_rows}")

, но меня смущает что мне эта функция вот такое возвращает

319237761065 was processed from 319235351580
319237772198 was processed from 319235351580

Ну те как кол-во строк может больше итоговых? )
Конечно можно поставить условие num_rows >= processed_rows но как-то очково и не остановлю ли я запрос раньше времени в таком случае

4 ответов

16 просмотров

Я сделал такой тайм-аут {"send_receive_timeout": 18000} и больше не парился с execute

Vitaly-Pismarev Автор вопроса
Константин
Я сделал такой тайм-аут {"send_receive_timeout": 1...

Так у меня висит он пока не отвалится

Количество строк, в случае execute_with_progress, емнип, приблизительное. То есть сам сервер так возвращает. С s3, честно говоря, не тестил. Но поскольку это всё на стороне сервера происходит, думаю разницы особой не должно быть. Если скинете сниппеты как это воспроизвести, то потыкаю на досуге

Vitaly-Pismarev Автор вопроса
Kostya
Количество строк, в случае execute_with_progress, ...

я просто дергал INSERT SELECT который долгий (необязательно загрузку с S3) вот так: self.client.execute(query=sql_query, settings={'connect_timeout': 3000, 'send_receive_timeout': 1500}) Клиент объявлял вот так: self.client = Client( host=self.job_config['host'], port=self.job_config['port'], user=self.credentials['user'], password=self.credentials['password'], database=self.job_config['db'] ) При маленьком таймауте он обрывал соединение по запрос на сервере продолжал крутиться. При большом таймауте код продолжал работать даже после того как запрос на сервере отработал и его не видно в system.process progress = self.client.execute_with_progress(query) for num_rows, total_rows in progress: print(f"{num_rows} was processed from {total_rows}") такой вот код тоже не заканчивается и продолжает работать даже когда у нас все строки обработаны (это видно по сообщениям) Версии: Python 3.8.12 clickhouse-driver==0.2.4 Версия КХ: 22.9.3.18

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта