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

使用aiohttp通过Unix Socket请求服务器报InvalidURL错误求助

解决aiohttp通过Unix Socket发起请求时的InvalidURL错误

错误原因

你遇到的InvalidURL: /test异常,核心原因是aiohttp客户端请求要求传入完整格式的URL——哪怕使用Unix Socket连接,也不能只传纯路径。内部URL解析逻辑必须识别协议(如http)和主机名部分,纯路径无法通过校验。

解决方案

只需将请求路径改为包含虚拟主机名的完整URL即可,UnixConnector会自动忽略主机名,直接使用指定的socket路径建立连接。修改后的代码示例:

from aiohttp import ClientSession, UnixConnector

async def send_unix_socket_request():
    async with ClientSession(connector=UnixConnector(path='.../server.sock')) as client:
        # 用localhost作为虚拟主机名,可替换为任意字符串
        response = await client.post('http://localhost/test')
        # 按需处理响应,比如解析JSON
        result = await response.json()
        print(result)

也可以使用aiohttp支持的特殊URL格式(无需单独指定UnixConnector):

async with ClientSession() as client:
    # 格式规则:http://unix:/socket文件路径:/请求路径
    response = await client.post('http://unix:/.../server.sock:/test')

两种方法都能解决InvalidURL问题,第一种更适合需要复用UnixConnector的场景。

内容的提问来源于stack exchange,提问作者N.Maxim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:52:20