接続プーリング・サンプル・コード
OCI Functionsで作成するファンクションへの追加を検討するために、特に効率的な接続プールのサンプル・コードについてご確認ください。
外部リソースに接続するファンクションの場合、通常、ファンクションが初めて起動されたときに接続を確立するために必要な時間を短縮するために、ファンクションに接続プーリング・コードを含めます。
この項では、特に効率的な接続プーリングのサンプル・コードを示します。
Pythonでの接続プール・コードの例
import requests, json, logging
def send_to_endpoint(data: list, rest_endpoint: str):
"""
This function demonstrates best practices to efficiently POST data payloads to REST API endpoints.
Because the Session and HTTPAdapter negotiate and retain TLS sessions with endpoints for the life of
the connection pool, it eliminates expensive TLS re-negotiation per POST.
"""
session = None
try:
session = requests.Session()
adapter = requests.adapters.HTTPAdapter(pool_connections=10, pool_maxsize=10)
session.mount('https://', adapter)
http_headers = {'Content-type': 'application/json'}
for item in data:
resp = session.post(rest_endpoint, data=json.dumps(item), headers=http_headers)
if resp.status_code not in [200, 202]:
raise RuntimeError(f'POST Error / {resp.status_code} / {resp.text}')
logging.info(f'POST Success / {resp.status_code} / {resp.text}')
finally:
session.close()