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

psql正常连接PostgreSQL但Python Tortoise-ORM连接报asyncio超时错误

排查与解决步骤
  • 验证数据库密码配置
    你当前使用的psql连接命令未携带密码参数,说明root用户可能配置了免密登录、IP段信任规则或密码为空。首先检查代码URL中的PASSWORD占位符是否已替换为正确的实际密码,若数据库未设置密码,直接删除URL中的密码段即可,修改后格式如下:
    @property
    def DATABASE_URL(self):
        return f"postgres://root@192.168.88.218:26257/user_service_db"
    
    错误的密码配置会导致鉴权阻塞,最终触发超时错误。
  • 检查代码运行环境的网络连通性
    若你的代码运行在Docker/虚拟机等隔离环境中,不能仅在宿主机验证psql连通性,需要进入代码运行的环境中执行以下命令验证网络是否可达:
    psql -U root -d user_service_db  -h 192.168.88.218 -p 26257
    
    若该命令执行失败,需调整容器/虚拟机的网络配置,保证其可以访问192.168.88.218网段。
  • 调整数据库URL前缀适配异步驱动
    Tortoise-ORM默认使用asyncpg作为PostgreSQL异步驱动,部分版本中postgres://前缀存在兼容问题,可以尝试替换为postgresql+asyncpg://前缀,修改后格式如下:
    postgresql+asyncpg://root@192.168.88.218:26257/user_service_db
    
  • 显式配置连接超时参数
    默认的连接超时时间过短也会触发该错误,你可以直接在URL后追加超时参数,或者修改TORTOISE_ORM配置显式指定超时时间:
    TORTOISE_ORM = {
        "connections": {
            "default": {
                "engine": "tortoise.backends.asyncpg",
                "credentials": {
                    "host": "192.168.88.218",
                    "port": 26257,
                    "user": "root",
                    "password": "",
                    "database": "user_service_db",
                    "connect_timeout": 30
                }
            }
        },
        "apps": {
            "models": {
                "models": ["app.models.email_code", "app.models.user", "app.models.currency", "aerich.models"],
                "default_connection": "default",
            },
        },
    }
    
  • 检查数据库访问白名单配置
    检查PostgreSQL的pg_hba.conf配置(或CockroachDB的客户端认证规则),确认是否允许代码运行环境的IP地址访问数据库,若IP不在白名单中,数据库会直接拒绝连接请求导致超时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:39:00