
pythonanywhere 免费账户因网络限制无法直连外部数据库(包括 neo4j),仅允许通过 http(s) 代理访问公网;升级为付费账户后即可解除该限制,实现正常 bolt/neo4j+s 连接。
pythonanywhere 免费账户因网络限制无法直连外部数据库(包括 neo4j),仅允许通过 http(s) 代理访问公网;升级为付费账户后即可解除该限制,实现正常 bolt/neo4j+s 连接。
PythonAnywhere 对免费用户的出站网络连接施加了严格限制:仅允许通过 http:// 或 https:// 协议、经其内置代理访问外部服务,而所有数据库协议(如 Neo4j 的 bolt://、neo4j://、neo4j+s://)均被明确禁止。这意味着即使你的 URI、认证凭据完全正确(如示例中 neo4j+s://uri:7687),且本地 Java 应用可正常连接,PythonAnywhere 免费环境仍会抛出类似 Unable to retrieve routing information 的错误——本质是底层 TCP 连接被防火墙拦截,而非认证或配置问题。
✅ 正确应对方式如下:
确认账户类型:登录 PythonAnywhere Dashboard → 查看右上角账户状态。若显示 “Free” 或 “Hobby”,则受此限制约束。
升级账户:选择 “Web” → “Account” → 升级至至少 “Always-on task” 或 “Professional” 计划。付费账户开放全部端口的出站连接,Neo4j 驱动可正常建立 Bolt 协议会话。
提示词大师-python版下载图片提示词生成器?不止如此。 马甲系统 —— 把脑海中的画面,翻译成AI能理解的专业表达。 用得越多,它越懂你:首次需要多问几句确认方向,用久了几乎一说就懂。 用得越多,它越快:缓存机制让后续对话越来越省。 RAG进化:成功案例持续入库,越跑越聪明。 输入「新手指南」查看完整功能介绍
-
保持代码规范(升级后无需修改):
from neo4j import GraphDatabase URI = "neo4j+s://your-instance-id.databases.neo4j.io:7687" # 推荐使用 neo4j+s(加密+路由) AUTH = ("neo4j", "your-strong-password") driver = GraphDatabase.driver(URI, auth=AUTH) # 后续操作同原脚本,无需降级为 http 或轮询方案
⚠️ 注意事项:
- ❌ 不要尝试用
requests封装 Neo4j Browser API(如/db/data/transaction)绕过限制:免费账户同样禁止非 HTTP(S) 数据库端口(如 7474/7687)的直连,且官方不推荐该方式用于生产; - ❌ 避免误用
neo4j://(无加密)或bolt://(已弃用),优先采用neo4j+s://(强制 TLS + 路由支持)或neo4j://(若服务端明确支持无加密); - ✅ 升级后首次连接建议添加超时与重试逻辑,提升健壮性:
driver = GraphDatabase.driver( URI, auth=AUTH, connection_timeout=30, max_connection_lifetime=3600, max_connection_pool_size=50 )
总结:该问题100% 由 PythonAnywhere 免费版网络策略导致,与代码逻辑、Neo4j 配置或凭据无关。唯一可靠解法是升级账户。开发阶段可先在本地或 GitHub Codespaces 中验证脚本,待部署至 PythonAnywhere 时再启用付费计划,兼顾成本与功能需求。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










