news 2026/9/3 6:35:30

【问题解决】ConnectionRefusedError: [Errno 111] Connection refused when accessing http://127.0.0.1:8000/v1

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【问题解决】ConnectionRefusedError: [Errno 111] Connection refused when accessing http://127.0.0.1:8000/v1

文章目录

  • 【问题解决】ConnectionRefusedError: [Errno 111] Connection refused when accessing http://127.0.0.1:8000/v1/completions
    • 问题描述
    • 问题原因
    • 解决方案
      • 方案 1:检查服务器是否运行
      • 方案 2:启动服务器
        • Ollama 服务器
        • vLLM 服务器
        • FastAPI 服务器
      • 方案 3:检查服务器日志
      • 方案 4:检查 API 端点
      • 方案 5:检查防火墙设置
      • 方案 6:使用不同的端口
    • 示例代码
      • 完整的连接测试和服务器启动示例
    • 常见问题
      • Q: 为什么服务器启动后很快就崩溃了?
      • Q: 如何查看服务器的详细日志?
      • Q: 端口 8000 被占用怎么办?
      • Q: 防火墙阻止了连接怎么办?
    • 总结

【问题解决】ConnectionRefusedError: [Errno 111] Connection refused when accessing http://127.0.0.1:8000/v1/completions

问题描述

在访问本地服务器 API 时,遇到以下错误:

ConnectionRefusedError: [Errno 111] Connection refused when accessing http://127.0.0.1:8000/v1/completions

问题原因

这个错误通常由以下原因引起:

  1. 服务器未启动:本地服务器(如 Ollama、vLLM 或其他模型服务)未运行
  2. 端口错误:服务器运行在不同的端口上
  3. 网络配置问题:防火墙或网络设置阻止了连接
  4. 服务器崩溃:服务器进程已崩溃或异常退出
  5. 路径错误:API 端点路径不正确
  6. 依赖问题:服务器缺少必要的依赖项

解决方案

方案 1:检查服务器是否运行

# 检查端口 8000 是否被占用lsof-i :8000# 或使用 netstatnetstat-tuln|grep8000# 或使用 ssss -tuln|grep8000# Windows 系统使用netstat-ano|findstr :8000

方案 2:启动服务器

根据使用的服务器类型,启动相应的服务:

Ollama 服务器
# 启动 Ollama 服务ollama serve
vLLM 服务器
# 使用 vLLM 启动服务器python -m vllm.entrypoints.api_server --model mistralai/Mistral-7B-v0.1 --port8000
FastAPI 服务器
# 启动 FastAPI 服务器uvicorn app:app --host0.0.0.0 --port8000

方案 3:检查服务器日志

# 查看服务器日志(以 Ollama 为例)journalctl -u ollama# 或查看最近的日志journalctl -u ollama -n50

方案 4:检查 API 端点

确保使用正确的 API 端点:

importrequests# 测试 API 连接try:response=requests.post("http://localhost:8000/v1/completions",json={"model":"mistral","prompt":"Hello, ","max_tokens":50})print(f"Status code:{response.status_code}")print(f"Response:{response.json()}")exceptExceptionase:print(f"Error:{e}")

方案 5:检查防火墙设置

# 检查防火墙状态(Linux)sudoufw status# 允许端口 8000(Linux)sudoufw allow8000# Windows 防火墙设置# 控制面板 -> 系统和安全 -> Windows Defender 防火墙 -> 高级设置 -> 入站规则 -> 新建规则

方案 6:使用不同的端口

如果端口 8000 被占用,使用其他端口:

# 使用端口 8080 启动服务器python -m vllm.entrypoints.api_server --model mistralai/Mistral-7B-v0.1 --port8080

然后更新客户端代码:

response=requests.post("http://localhost:8080/v1/completions",# 其他参数不变)

示例代码

完整的连接测试和服务器启动示例

importrequestsimportsubprocessimporttimeimportosdefcheck_server_running(port=8000):"""检查服务器是否在指定端口运行"""try:response=requests.get(f"http://localhost:{port}/v1/models")returnresponse.status_code==200except:returnFalsedefstart_server(model="mistralai/Mistral-7B-v0.1",port=8000):"""启动 vLLM 服务器"""print(f"Starting server with model{model}on port{port}...")# 启动服务器进程process=subprocess.Popen(["python","-m","vllm.entrypoints.api_server","--model",model,"--port",str(port)],stdout=subprocess.PIPE,stderr=subprocess.PIPE,text=True)# 等待服务器启动time.sleep(10)# 检查服务器是否成功启动ifcheck_server_running(port):print(f"Server started successfully on port{port}")returnprocesselse:print("Failed to start server")# 打印错误信息stderr=process.stderr.read()print(f"Error:{stderr}")process.terminate()returnNonedeftest_completion(port=8000):"""测试文本生成 API"""print("Testing completion API...")try:response=requests.post(f"http://localhost:{port}/v1/completions",json={"model":"mistralai/Mistral-7B-v0.1","prompt":"Hello, how are you?","max_tokens":50,"temperature":0.7})ifresponse.status_code==200:result=response.json()print(f"Success! Generated text:{result['choices'][0]['text']}")returnTrueelse:print(f"Error:{response.status_code}-{response.text}")returnFalseexceptExceptionase:print(f"Connection error:{e}")returnFalse# 使用示例if__name__=="__main__":port=8000# 检查服务器是否已运行ifnotcheck_server_running(port):print("Server not running. Starting server...")server_process=start_server(port=port)ifnotserver_process:print("Exiting...")exit(1)# 测试 APItest_completion(port=port)# 注意:这里服务器会继续运行# 要停止服务器,使用 server_process.terminate()else:print("Server already running. Testing API...")test_completion(port=port)

常见问题

Q: 为什么服务器启动后很快就崩溃了?

A: 可能是因为内存不足、缺少依赖项或模型文件损坏。检查服务器日志获取详细错误信息。

Q: 如何查看服务器的详细日志?

A: 启动服务器时不要使用后台运行,或查看系统日志文件。对于 vLLM,可以添加--debug参数获取更详细的日志。

Q: 端口 8000 被占用怎么办?

A: 使用lsof -i :8000查看占用端口的进程,然后决定是停止该进程还是使用其他端口。

Q: 防火墙阻止了连接怎么办?

A: 在防火墙设置中允许端口 8000 的入站连接,或临时关闭防火墙进行测试。

总结

遇到ConnectionRefusedError: [Errno 111] Connection refused错误时,主要需要:

  1. 确认服务器是否正在运行
  2. 检查服务器端口是否正确
  3. 验证 API 端点路径是否正确
  4. 查看服务器日志获取详细错误信息
  5. 检查网络和防火墙设置
  6. 确保服务器有足够的资源(内存、GPU 等)

通过以上解决方案,应该能够成功连接到本地服务器 API 并进行文本生成。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 0:02:00

基于CODESYS平台的S7客户端通讯源码解析与西门子PLC的互操作性研究

基于CODESYS平台的S7客户端与西门子PLC通讯源码工业现场的数据通讯就像车间里的八卦,设备之间总得互相传点悄悄话。今天咱们聊聊CODESYS平台下用C语言搞S7协议通讯的黑科技——别看西门子PLC平时一副高冷样,其实撩拨起来也没那么难。先甩段硬核代码镇楼&…

作者头像 李华
网站建设 2026/9/2 6:39:02

小红书运营资源合集

小红书运营课,从0到1运营一个赚钱的小红书账号 文件大小: 10.9GB内容特色: 10.9GB实战教程,0-1起号涨粉变现全流程适用人群: 想靠小红书副业或创业的新手与进阶运营核心价值: 快速掌握爆款逻辑,实现账号盈利闭环下载链接: https://pan.quark…

作者头像 李华
网站建设 2026/9/3 1:20:28

78678456845

456456354645

作者头像 李华
网站建设 2026/9/2 23:27:21

高阶组件(HOC)在Vue中的实现:全面解析与最佳实践

高阶组件(HOC)在Vue中的实现:全面解析与最佳实践 引言 高阶组件(HOC)是前端开发中实现代码复用和逻辑抽象的重要技术模式。虽然起源于React,但在Vue中同样可以通过多种方式实现,尤其在Vue 3的Composition API加持下,高阶组件的实…

作者头像 李华
网站建设 2026/9/3 1:22:36

在RAG增强检索中应该用什么构建上下文?

“ RAG中召回策略有多种多样,但同样构建上下文也有很多方法。” 之前在社群有过一次关于关键字和语义检索的讨论,不过当时两个人好像不在一个频道上,他说他的关键字召回,我说我是语义召回,然后讨论到了怎么chunk的问题…

作者头像 李华
网站建设 2026/9/3 3:12:50

SSM毕设项目推荐-基于ssm的英语四六级学习系统英语四六级在线学习系统各类英语四六级学习资源一站式的学习平台【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华