データベース クエリの結果をアドホックなクライアント リクエストに提供しようとしているが、個々のクエリごとに接続を開きたくない。私はそれを正しく行っているかどうかわかりません。
現在の解決策は、「サーバー」側で次のようなものです(明確にするために大幅に削減されています):
import rpyc
from rpyc.utils.server import ThreadedServer
import cx_Oracle
conn = cx_Oracle.conect('whatever connect string')
cursor = conn.cursor()
def get_some_data(barcode):
# do something
return cursor.execute("whatever query",{'barcode':barcode})
class data_service(rpyc.Service):
def exposed_get_some_data(self, brcd):
return get_some_data(brcd)
if __name__ == '__main__':
s = ThreadedServer(data_service, port=12345, auto_register=False)
s.start()
これでしばらくは問題なく動きます。ただし、プログラムがクラッシュすることがありますが、これまでのところ、いつクラッシュするかを追跡できませんでした。
私が確認したいのは、data_service クラスの外部でデータベース接続がどのように作成されるかを確認することです。これ自体が問題を引き起こす可能性はありますか?
どうもありがとうございました。