You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python低级Socket检测局域网MongoDB服务器响应(无需PyMongo类库)

用Python原生Socket检测MongoDB服务状态的正确方式

你代码的问题所在

报错「[Errno -2] 名称或服务未知」是因为你给socket.connect()传的地址带了mongodb://前缀——Socket只认纯IP/主机名,这个协议前缀会被当成主机名去解析,当然找不到对应的服务。

修正后的可运行代码

只需要去掉协议前缀,用纯IP地址即可。另外建议加上超时设置,避免无响应时程序卡死:

import socket

def check_mongodb_alive(host, port=27017, timeout=5):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(timeout)
    try:
        # 只传纯IP和端口,不要加mongodb://
        sock.connect((host, port))
        print(f"✅ {host}:{port} 上的MongoDB服务可连接")
        return True
    except socket.error as e:
        print(f"❌ 连接失败: {str(e)}")
        return False
    finally:
        sock.close()

# 测试局域网内的MongoDB服务器
check_mongodb_alive('192.168.1.2')

补充说明

  • 这个方法仅验证TCP连接是否能建立,刚好满足你「无需访问文档,只检测服务响应」的需求——只要MongoDB在监听27017端口,就能建立连接,和认证权限无关(认证是MongoDB协议层的步骤,不影响TCP握手)。
  • 超时参数可以根据你的局域网环境调整,默认5秒足够应对大多数场景。

内容的提问来源于stack exchange,提问作者Expertcompsci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 10:05:14