用途:提供 OCI Python SDK 的生产级实践,规避常见陷阱,包括 Instance Principal 认证因每次请求重建客户端导致的内存泄漏(约 10 MiB/小时)、缺少 429/500 重试逻辑,以及各服务客户端超时配置不一致。OCI SDK 不同服务默认超时不同(Compute 60 秒、Object Storage 上传 300 秒),且默认不设置连接超时。
主要能力:单例客户端模式(创建一次、复用、关闭),防止 Instance Principal 内存泄漏;显式连接与读取超时配置;指数退避重试(覆盖 429、500、502、503、504 及超时);自动分页;等待资源状态变更的复合操作;错误分类与手动重试。
使用方式:前置条件为完成 oraclecloud-install-auth 并具备有效 ~/.oci/config,Python 3.8+ 且 pip install oci,熟悉 OCI 服务客户端。通过线程安全单例 OCIClients.get() 获取客户端,避免直接创建;为各客户端设置 timeout=(connect, read);使用 oci.retry.RetryStrategyBuilder 定制重试;用 oci.pagination.list_call_get_all_results 或生成器分页;用 ComputeClientCompositeOperations 的 launch_instance_and_wait_for_state 等待状态。
适用场景:长时间运行的 OCI 服务、批量列举资源、需要稳定重试与超时控制的集成。
限制:401、404、400 不应重试;OCI 不返回 Retry-After,需用去相关抖动;证书校验失败需另行排查。具体收费、价格与平台信息暂未提供。