news 2026/7/1 13:09:11

【问题解决】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/7/1 13:00:28

从“有数据”到“用数据”,再到“用 AI 做更好的决策”

AI+Python 如何助力公共政策优化 从“有数据”到“用数据”,再到“用 AI 做更好的决策” 作者:Echo_Wish 说到公共政策优化,很多人脑子里第一个画面可能是这样的: “政府发布一堆数据,然后专家来分析,最后出一份建议报告。” 这是过去的流程。而现在,有了 AI + Pyth…

作者头像 李华
网站建设 2026/7/1 13:00:39

DevExpress发布文档MCP Server:提升开发体验的AI文档智能服务(三)

DevExpress拥有.NET开发需要的平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress 近期重要版本v25.2已正式发布,该版本拥有众多新产品和…

作者头像 李华
网站建设 2026/7/2 0:50:39

基于STM32的频率计设计

基于stm32的频率计设计本文深入剖析一款基于STM32F10x系列微控制器的数字频率计系统。该系统旨在对外部输入信号进行高精度、实时的频率测量,并通过仿真环境验证其功能。整个设计充分利用了STM32丰富的片上外设资源,构建了一个结构清晰、性能可靠的嵌入式…

作者头像 李华
网站建设 2026/7/1 13:02:23

健康科技的新突破点:提示工程的重要贡献方向

健康科技的AI拐点:提示工程如何重构医疗数据的“对话”能力? 引言:健康科技的“数据哑巴”困境,该用提示工程破局了! 你有没有见过这样的场景? 医院的电子病历系统里堆着几十万份非结构化文本:医…

作者头像 李华
网站建设 2026/7/1 13:00:36

SSM毕设项目推荐-基于高校毕业生求职与企业招聘信息管理基于ssm的就业招聘查询系统【附源码+文档,调试定制服务】

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

作者头像 李华
网站建设 2026/7/1 13:00:34

计算机SSM毕设实战-基于SSM的英语四六级在线考试系统基于ssm的英语四六级学习系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

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

作者头像 李华