Как создать пул соединений (или сеансов) в многопроцессорном коде python, используя cx_ Oracle для подключения к базе данных Oracle? - PullRequest
1 голос
/ 19 апреля 2020

У меня очень длинный multiprocessing python code, который включает в себя взаимодействие с Oracle database несколько раз во время пробега. Предполагается, что код является независимым приложением, которое будет запускать 24 * 7 и извлекать данные из базы данных, выполнять ее с помощью многопроцессорной обработки, записывать результаты обратно в базу данных, а затем снова запрашивать базу данных для данных fre sh и повторять этот цикл на и вкл. Как я могу создать connection pool (or session pool (я не знаю разницу между 2, новым в python и кодированием) для повышения производительности кода? Необходимо подключиться к Oracle db с помощью cx_oracle. Любая помощь будет оценена. Большое спасибо заранее !!

1 Ответ

1 голос
/ 19 апреля 2020

Как я могу создать пул соединений (или пул сеансов, я не знаю разницу между 2, новым в python и кодированием) для улучшения производительности кода?

Каждое соединение в cx_Oracle connection pool соответствует одному Oracle session.

Когда приложения часто подключаются и отключаются от базы данных, Пул подключений повышает производительность. cx_Oracle пул соединений позволяет приложениям создавать и поддерживать пул соединений с базой данных. Пулы создаются с помощью cx_Oracle.SessionPool(), а затем можно вызывать SessionPool.acquire() для получения соединения из пула. Начальный размер пула и максимальный размер пула указываются при создании пула. Когда пул должен расти, новые соединения создаются автоматически. Пул может уменьшиться до минимального размера, когда соединения больше не используются. Соединения, полученные из пула, должны быть возвращены обратно в пул с помощью SessionPool.release() или Connection.close(), когда они больше не требуются. В противном случае они будут автоматически возвращены в пул, когда все переменные, ссылающиеся на соединение go, выйдут из области видимости. Пул сеансов может быть полностью закрыт с помощью SessionPool.close().

В приведенном ниже примере показано, как подключиться к Oracle базе данных с помощью пула соединений:

# Create the session pool
pool = cx_Oracle.SessionPool("hr", userpwd,
        "dbhost.example.com/orclpdb1", min=2, max=5, increment=1, encoding="UTF-8")

# Acquire a connection from the pool
connection = pool.acquire()

# Use the pooled connection
cursor = connection.cursor()
for result in cursor.execute("select * from mytab"):
    print(result)

# Release the connection to the pool
pool.release(connection)

# Close the pool
pool.close()

Подробнее о Пул соединений .

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