Как подключиться к внешней базе данных Oracle с помощью пакета Python cx_Oracle в Google App Engine Flex? - PullRequest
0 голосов
/ 31 мая 2018

Моему приложению Python App Engine Flex необходимо подключиться к внешней базе данных Oracle.В настоящее время я использую пакет cx_Oracle Python, который требует от меня установки Oracle Instant Client .

Я успешно запустил это локально (в macOS), выполнив Мгновенные шаги установки клиента .Шаги потребовали, чтобы я сделал следующее:

  1. Создайте каталог с именем /opt/oracle
  2. Создайте символическую ссылку от /opt/oracle/instantclient_12_2/libclntsh.dylib.12.1 до ~/lib/

Однако я не совсем понимаю, как сделать то же самое в App Engine Flex (, инструкции ).В частности, вот что меня смущает:

  1. В инструкциях сказано, что я должен запустить sudo yum install libaio, чтобы установить пакет libaio.Как мне это сделать на GAE Flex?Или этот пакет уже доступен?
  2. Я думаю, что могу добавить файлы Instant Client в GAE (колоссальные ~ 100 МБ!), А затем установить переменную среды LD_LIBRARY_PATH в app.yaml на export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2:$LD_LIBRARY_PATH.Будет ли это работать?
  3. Возможно ли это даже без использования пользовательских контейнеров Docker в App Engine Flex?

В целом, я не уверен, что я на правильном пути.Хотелось бы услышать от кого-то, кто справился с этим раньше :) 1037 *

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Если какая-либо из ваших зависимостей недоступна в базовых гибких изображениях GAE, предоставленных Google, и не может быть установлена ​​с помощью pip (потому что это не пакет python или он не доступен в PyPI или по любой другой причине), тогда вы можете 't используйте файл requirements.txt, чтобы установить его в своем приложении GAE flex.

Правильный способ удовлетворения таких зависимостей - создание собственной настраиваемой среды выполнения.От О пользовательских средах выполнения :

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

Да, это означает предоставление пользовательского файла Docker.В вашем конкретном случае вы устанавливаете Instant Client и libaio внутри этого Dockerfile.См. Также Создание пользовательских сред выполнения .

0 голосов
/ 05 июня 2018

Отвечая на ваш первый вопрос, я думаю, что инструкции на веб-сайте оракула просто показывают, что вам необходимо установить указанную библиотеку, чтобы ваше приложение работало.

В случае гибкости App Engine они обеспечиваютто, что библиотеки присутствуют в развертывании, находится в текстовом файле require.txt.Существует страница документации , в которой объясняется, как это сделать.

С другой стороны, я предполагаю, что "Мгновенные файлы клиента" - это не библиотеки, а необходимые данные для вашего приложения.запустить.Вы должны использовать Google Cloud Storage для их обслуживания или любую другую альтернативу Storage в Google Cloud.

Я считаю, что если это все, что вам нужно для работы вашего приложения, нажмитеВаш собственный контейнер не должен быть необходим.

...