python - 如何捕捉到 minIO 服务器的连接问题?
问题描述
我正在尝试在 Python 客户端上为 minio(minio 包)捕获身份验证错误:
from minio import Minio
from minio.error import MinioError, ResponseError
## Data Lake (Minio)
try :
minioClient = Minio(endpoint= config['databases']['datalake']['hostip']+":"+config['databases']['datalake']['port'],
access_key= config['databases']['datalake']['accesskey'],
secret_key= config['databases']['datalake']['secretkey'],
secure= False)
app.logger.info("MinIO Server Connected!")
except MinioError as e:
app.logger.info("Could not connect to MinIO Server")
使用假(错误)凭据时,我似乎无法捕捉到身份验证错误。它总是通过......关于如何捕捉这些问题的任何想法?
解决方案
如上所述:
为了检查连接性,我尝试连接到一个不存在的存储桶。
我不认为这很直观,为什么不使用list_buckets()代替,例如:
from urllib3.exceptions import MaxRetryError
self.config = {
"endpoint": "localhost:9000",
"access_key": "minioadmin",
"secret_key": "minioadmin",
"secure": False,
"http_client": urllib3.PoolManager(
num_pools=10,
)
}
try:
self.client = Minio(**self.config)
self.client.list_buckets()
except MaxRetryError:
logging.critical("Object storage not reachable")
重要的是要通知,如果 Minio 不存在,根据您的应用程序的上下文,启动时间将比平时长一点。
推荐阅读
- php - SQLSTATE [22007]:无效的日期时间格式:1366 不正确的整数值:问题
- spring - Spring Boot REST API 返回部分响应
- javascript - 如何以所需格式显示时间?
- android - 重新安装相同版本的应用程序后,警报不起作用
- javascript - 如何在不更改当前 URL 的情况下打开新窗口?
- javascript - 如何排序,查找并将一个元素放在顶部?
- r - 在数据框列表中的某个列上应用 gsub
- python - How can I display kind="swarm" and kind="point" on the same catplot in Seaborn?
- flutter - Flutter Android Studio 使花括号从新行开始
- assembly - 如何在 Flat Assembler 中进行冒泡排序?