我试图在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")当使用假(错误)can时,我似乎无法捕获身份验证错误。总是传球..。对于如何解决这些问题,有什么想法吗?
发布于 2021-02-03 12:10:31
Minio()只创建一个对象,而不连接到服务器。因此,对象创建也可以使用假凭据或假urls和param,因为该对象暂时不用于连接某个地方。您的异常处理只会尝试捕获简单python对象创建所引发的错误。
为了检查连接性,我尝试连接到一个不存在的桶。如果我收到一条错误消息,一切都很好,如果有超时,您可以捕获它并记录它。(您也可以尝试连接到现有的桶,但这增加了检查创建/到达此桶或存储时是否存在错误的复杂性)
#create object
client = Minio(
host,
access_key=user,
secret_key=pass,
more_access_data=...
)
# reach storage
try:
if not client.bucket_exists("nonexistingbucket"):
logging.debug("Object storage connected")
except:
# raise error if storage not reachable
logging.critical("Object storage not reachable")发布于 2021-07-27 10:16:42
如上所述:
为了检查
的连通性,我尝试连接到一个不存在的桶。
我不认为这是直观的,为什么不使用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不存在,取决于应用程序的上下文,启动时间将比通常要长一些。
https://stackoverflow.com/questions/64836591
复制相似问题