Azure虚拟机中Python Snowflake连接器连接异常:OCSP Fail Open Mode日志重复输出问题求助
解决Snowflake连接器重复输出OCSP Fail Open Mode日志的问题
我之前在Azure VM上连接Snowflake时也碰到过完全一样的问题,这个日志反复跳出来确实挺烦人的,给你分享几个亲测有效的解决办法:
先搞懂这个日志是什么意思
这个提示说明Snowflake连接器当前处于OCSP Fail Open模式——简单说就是当证书有效性/吊销状态校验出现问题(比如OCSP响应器访问失败)时,连接器会忽略这些错误优先保证连接,但会反复输出这条提示日志。
办法1:调整OCSP模式(推荐优先尝试)
如果你的Azure VM网络能正常访问Snowflake的OCSP响应器,可以把OCSP模式改成Fail Closed,这样既不会有日志输出,又能保证证书校验的安全性:
修改你的open_connection方法里的连接参数,添加ocsp_fail_open=False:
def open_connection(self): if not self.conn: log.info(f'Opening DB connection.') self.conn = snowflake.connector.connect( user=self.user, password=self.password, account=self.account, ocsp_fail_open=False )
⚠️ 注意:如果你的VM网络有防火墙/NSG限制,无法访问OCSP响应器,设置这个参数后连接会直接失败,这时候需要先解决网络问题。
办法2:直接屏蔽这条日志(如果不想改OCSP模式)
要是你只是不想看到这条重复的日志,不管OCSP模式的话,可以通过日志过滤来干掉它:
方式A:降低Snowflake连接器的日志级别
直接把Snowflake的日志级别调到WARNING及以上,这样提示级别的日志就不会输出了:
import logging from snowflake.connector import logger as snowflake_logger # 先移除默认的日志处理器,避免重复输出 for handler in snowflake_logger.handlers: snowflake_logger.removeHandler(handler) # 设置日志级别为WARNING snowflake_logger.setLevel(logging.WARNING)
方式B:精准过滤这条特定日志
如果不想影响其他提示日志,可以写个过滤器专门屏蔽这条消息:
import logging from snowflake.connector import logger as snowflake_logger class OCSPLogFilter(logging.Filter): def filter(self, record): # 过滤掉包含指定内容的日志 return 'This connection is in OCSP Fail Open Mode' not in record.getMessage() # 给Snowflake日志器添加过滤器 snowflake_logger.addFilter(OCSPLogFilter())
办法3:检查Azure VM的网络连通性
如果调整OCSP模式后连接失败,那大概率是VM的网络限制导致无法访问Snowflake的OCSP响应器:
- 先在Azure VM上测试访问
ocsp.snowflakecomputing.com(端口443),可以用telnet ocsp.snowflakecomputing.com 443或者curl https://ocsp.snowflakecomputing.com来验证 - 如果访问失败,需要在VM的NSG(网络安全组)或者防火墙里添加出站规则,允许访问这个地址和443端口
内容的提问来源于stack exchange,提问作者3nomis
相关产品推荐
相关产品推荐

