簡體   English   中英

如何使用Google App Engine Flex上的Python cx_Oracle包連接到外部Oracle數據庫?

[英]How do I connect to an external Oracle database using the Python cx_Oracle package on Google App Engine Flex?

我的Python App Engine Flex應用程序需要連接到外部Oracle數據庫。 當前,我正在使用cx_Oracle Python軟件包,該軟件包要求我安裝Oracle Instant Client

我已按照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(高達100MB!),然后在app.yaml設置LD_LIBRARY_PATH環境變量以export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2:$LD_LIBRARY_PATH 這樣行嗎?
  3. 在App Engine Flex上不使用自定義Docker容器,這是否還可行?

總的來說,我不確定自己是否走對了。 希望收到以前處理過此問題的人的來信:)

如果您提供的任何依賴項在Google提供的基本GAE flex映像中不可用,並且無法通過pip進行安裝(因為它不是python軟件包,或者在PyPI中不可用,或出於其他任何原因),那么您將無法使用這些requirements.txt文件以將其安裝在您的GAE flex應用中。

滿足這種依賴性的正確方法是構建自己的自定義運行時。 關於自定義運行時

自定義運行時允許您定義新的運行時環境,其中可能包括其他組件,例如語言解釋器或應用程序服務器。

是的,這意味着要提供一個自定義的Docker文件。 在特定情況下,您將在此Dockerfile中安裝Instant Client和libaio 另請參閱構建自定義運行時

回答您的第一個問題,我認為oracle網站上的說明僅表明您必須安裝上述庫才能使應用程序正常工作。

對於App Engine flex,它們可以確保在部署中存在庫,並帶有requirements.txt文本文件。 有一個文檔頁面,說明了如何執行此操作。

另一方面,我將假定“即時客戶端文件”不是庫,而是運行您的應用程序所需的數據。 您應該使用Google Cloud Storage來為它們提供服務,或者使用Google Cloud中存儲的任何其他替代方法

我相信,如果這是應用程序正常運行所需要的一切,則無需推送自己的自定義容器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM