cx_oracle threadpool первая вставка функции вызова медленно

#python #oracle #cx-oracle #aiohttp

#python #Oracle #cx-oracle #aiohttp

Вопрос:

У меня проблема, я использую пакет cx_oracle aiohttp threadpollexecutor для вызова функции в базе данных, которая проверяет параметры и вставляет данные в таблицы Oracle. Я заметил странную особенность: самый первый запрос после полуночи выполняется более 17 секунд, но все последующие запросы выполняются в течение 20 миллисекунд. Пул соединений не нарушается и используется в качестве глобальной переменной через функцию. В чем может быть проблема и почему только первый запрос ведет себя так??

Комментарии:

1. По приблизительному предположению, брандмауэр отключает соединения, и пул соединений должен их воссоздавать. Не могу сказать, может, не зная дополнительной информации.

Ответ №1:

Кристофер Джонс дал вам предложение. Самый простой способ убедиться в этом — установить для переменной среды DPI_DEBUG_LEVEL значение 4 перед запуском вашего приложения и перенаправлением stderr в файл журнала. Затем вы можете увидеть, какая функция ODPI-C была запущена сразу после полуночи и сколько времени это заняло. Если предложение Криса верно, вероятный вызов будет dpiConn_create() .

Комментарии:

1. Спасибо, Кристофер, Энтони! Я попробую это сегодня.

2. И небольшой вопрос — есть ли способ справиться с этим? Каков наилучший способ воссоздать пул соединений, чтобы не замедлять работу приложения?

3. @ChristopherJones dpiStmt_execute() так долго (первый вызов функции со вставками после ночи): 8 секунд, это не dpiConn_create()