当前位置: 首页 > news >正文

使用FastAPI进行可视化部署

文章目录

    • 一、FastAPI介绍
    • 二、环境配置
    • 三、示例代码
      • 1.app.py代码如下
      • 2.websocket_handler.py 代码如下
      • 3.运行app
      • 4.遇到的问题与解决

在这里插入图片描述

一、FastAPI介绍

FastAPI是一个高性能的Python Web框架,它基于Starlette并利用了 Python类型提示的优势。它可以帮助我们快速构建具有强大功能的Web应用程序。

二、环境配置

依赖库介绍:

Uvicorn 是一个基于 asyncio 开发的轻量级高效的 web 服务器框架

它的设计初衷是为了实现两个主要目标:

首先,使用 uvloophttptools 实现一个极速的 asyncio 服务器;

其次,实现一个基于 ASGI(异步服务器网关接口)的最小应用程序接口。

Uvicorn 目前支持 HTTPWebSocketsPub/Sub 广播,并且可以扩展到其他协议和消息类型。

pip install fastapi uvicorn ollama -i https://pypi.tuna.tsinghua.edu.cn/simple

三、示例代码

示例代码目录结构如下

fastapi_chat_app/
│
├── app.py
├── websocket_handler.py
├── static/
│   └── index.html
  • app.py FastAPI 应用程序的主要设置和路由。

  • websocket_handler.py 处理 WebSocket 连接和消息流。

  • static/index.html HTML页面。

    1.app.py代码如下

    from fastapi import FastAPI
    from fastapi.responses import HTMLResponse
    from fastapi.staticfiles import StaticFiles
    from websocket_handler import websocket_endpointapp = FastAPI()app.mount("/static", StaticFiles(directory="static"), name="static")@app.get("/", response_class=HTMLResponse)
    async def get_form():with open("static/index.html") as f:html_content = f.read()return HTMLResponse(content=html_content)app.websocket("/ws")(websocket_endpoint)if __name__ == "__main__":import uvicornuvicorn.run("app:app", host="127.0.0.0", port=5001, reload=True) # 如果希望远程服务器调用,可以将host更改为"127.0.0.0"
    

    2.websocket_handler.py 代码如下

    import ollama
    from fastapi import WebSocketasync def websocket_endpoint(websocket: WebSocket):await websocket.accept()  # 接受WebSocket连接user_input = await websocket.receive_text()  # 接收用户输入的文本消息stream = ollama.chat(  # 使用ollama库与指定模型进行对话model='llama3.1',  # 指定使用的模型为llama3.1messages=[{'role': 'user', 'content': user_input}],  # 传入用户的输入消息stream=True  # 启用流式传输)try:for chunk in stream:  # 遍历流式传输的结果model_output = chunk['message']['content']  # 获取模型输出的内容await websocket.send_text(model_output)  # 通过WebSocket发送模型输出的内容except Exception as e:  # 捕获异常await websocket.send_text(f"Error: {e}")  # 通过WebSocket发送错误信息finally:await websocket.close()  # 关闭WebSocket连接
    

3.运行app

  1. 运行 app.py 文件。
uvicorn app:app --reload

打开页面。
在这里插入图片描述

4.遇到的问题与解决

修改app.py 中host 和port 后,通过uvicorn app:app --reload,修改未生效,远程主机无通过 http://<host>:port进行访问。

解决:
uvicorn运行时指定端口号

$ uvicorn app:app --reload --host 0.0.0.0 --port 8000
INFO:     Will watch for changes in these directories: ['./fastapi_chat_app']
INFO:     Uvicorn running on http://0.0.0.0:8086 (Press CTRL+C to quit)
INFO:     Started reloader process [4230] using StatReload
INFO:     Started server process [4232]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

相关文章:

使用FastAPI进行可视化部署

文章目录 一、FastAPI介绍二、环境配置三、示例代码1.app.py代码如下2.websocket_handler.py 代码如下3.运行app4.遇到的问题与解决 一、FastAPI介绍 FastAPI是一个高性能的Python Web框架&#xff0c;它基于Starlette并利用了 Python类型提示的优势。它可以帮助我们快速构建具…...

设计模式 之 工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)(C++)

文章目录 C 工厂模式引言一、简单工厂模式概念实现步骤示例代码优缺点 二、工厂方法模式概念实现步骤示例代码优缺点 三、抽象工厂模式概念实现步骤示例代码优缺点 C 工厂模式 引言 在 C 编程中&#xff0c;对象的创建是一个常见且基础的操作。然而&#xff0c;当项目规模逐渐…...

3、Kubernetes 集群部署 Prometheus 和 Grafana

Kubernetes 集群部署 Prometheus 和 Grafana node-exporter 安装Prometheus 安装和配置Prometheus 配置热加载Grafana 安装部署Grafana 配置 实验环境 控制节点/master01 192.168.110.10 工作节点/node01 192.168.110.20 工作节点/node02 192.168.110.30 node-exporter 安装 #…...

【C语言】第八期——指针

目录 1 初始指针 2 获取变量的地址 3 定义指针变量、取地址、取值 3.1 定义指针变量 3.2 取地址、取值 4 对指针变量进行读写操作 5 指针变量作为函数参数 6 数组与指针 6.1 指针元素指向数组 6.2 指针加减运算&#xff08;了解&#xff09; 6.2.1 指针加减具体数字…...

如何在 Mac 上安装并配置 JDK 环境变量

如何在Mac上安装并配置JDK环境变量 在开发过程中&#xff0c;许多应用和框架都需要使用Java&#xff0c;尤其是使用Java开发的应用程序。如果你是Mac用户&#xff0c;以下是安装并配置JDK环境变量的步骤&#xff0c;确保你能顺利运行Java程序。 步骤 1&#xff1a;下载JDK 访…...

【git-hub项目:YOLOs-CPP】本地实现05:项目移植

ok&#xff0c;经过前3个博客&#xff0c;我们实现了项目的跑通。 但是&#xff0c;通常情况下&#xff0c;我们的项目都是需要在其他电脑上也跑通&#xff0c;才对。 然而&#xff0c;经过测试&#xff0c;目前出现了2 个bug。 项目一键下载【⬇️⬇️⬇️】&#xff1a; 精…...

LeetCode 热题 100 206. 反转链表

LeetCode 热题 100 | 206. 反转链表 大家好&#xff0c;今天我们来解决一道经典的算法题——反转链表。这道题在 LeetCode 上被标记为简单难度&#xff0c;要求我们将一个单链表反转&#xff0c;并返回反转后的链表。下面我将详细讲解解题思路&#xff0c;并附上 Python 代码实…...

2025年02月21日Github流行趋势

项目名称&#xff1a;source-sdk-2013 项目地址url&#xff1a;https://github.com/ValveSoftware/source-sdk-2013项目语言&#xff1a;C历史star数&#xff1a;7343今日star数&#xff1a;929项目维护者&#xff1a;JoeLudwig, jorgenpt, narendraumate, sortie, alanedwarde…...

WebXR教学 03 项目1 旋转彩色方块

一、项目结构 webgl-cube/ ├── index.html ├── main.js ├── package.json └── vite.config.js二、详细实现步骤 初始化项目 npm init -y npm install three vite --save-devindex.html <!DOCTYPE html> <html lang"en"> <head><…...

深入解析JVM垃圾回收机制

1 引言 本节常见面试题 如何判断对象是否死亡&#xff08;两种方法&#xff09;。简单的介绍一下强引用、软引用、弱引用、虚引用&#xff08;虚引用与软引用和弱引用的区别、使用软引用能带来的好处&#xff09;。如何判断一个常量是废弃常量如何判断一个类是无用的类垃圾收…...

【简单】209.长度最小的子数组

题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回0。 示例 1&#xff1a; 输入&am…...

细说 Java 引用(强、软、弱、虚)和 GC 流程(二)

一、前文回顾 在 细说Java 引用&#xff08;强、软、弱、虚&#xff09;和 GC 流程&#xff08;一&#xff09; 我们对Java 引用有了总体的认识&#xff0c;本文将继续深入分析 Java 引用在 GC 时的一些细节。 还是从我们在前文中提到的引用流程图里说起&#xff0c;这里不清…...

CSS通过webkit-scrollbar设置滚动条样式

查看::-webkit-scrollbar-*各项关系 以下图为例&#xff0c;可以分别定义滚动条背景、滚动轨道、滚动滑块的样式。 需要先给外部容器设置高度&#xff0c;再设置overflow: auto&#xff0c;最后设置三个webkit属性。 <!DOCTYPE html> <html lang"en">…...

Win10配置VSCode的C/C++编译环境

GNU&#xff08;编译器工具集合&#xff09;包含了g、gcc和gdb等编译器。MinGW&#xff08;Minimalist GNU for Windows&#xff09;是一个适用于Windows操作系统的最小化的GNU工具集&#xff0c;它包括了GCC编译器&#xff08;包括g&#xff09;以及其他一些必要的库和工具。M…...

数据结构与算法再探(七)查找-排序

查找 一、二分查找 二分查找是一种高效的查找算法&#xff0c;适用于在已排序的数组或列表中查找特定元素。它通过将搜索范围逐步减半来快速定位目标元素。理解二分查找的“不变量”和选择左开右闭区间的方式是掌握这个算法的关键。 二分查找关键点 不变量 在二分查找中&a…...

【C语言】指针(5)

前言&#xff1a;上篇文章的末尾我们使用了转移表来解决代码冗余的问题&#xff0c;那我们还有没有什么办法解决代码冗余呢&#xff1f;有的这就是接下来要说的回调函数。 往期文章: 指针1 指针2 指针3 指针4 文章目录 一&#xff0c;回调函数二&#xff0c;qsort实现快速排序1…...

大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(2)

Paimon的下载及安装&#xff0c;并且了解了主键表的引擎以及changelog-producer的含义参考&#xff1a; 大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(1) 利用Paimon表做lookup join&#xff0c;集成mysql cdc等参考&#xff1a; 大数据组件(四)快速入门实时数据…...

PLC通讯

PPI通讯 是西门子公司专为s7-200系列plc开发的通讯协议。内置于s7-200 CPU中。PPI协议物理上基于RS-485口&#xff0c;通过屏蔽双绞线就可以实现PPI通讯。PPI协议是一种主-从协议。主站设备发送要求到从站设备&#xff0c;从站设备响应&#xff0c;从站不能主动发出信息。主站…...

前端js进阶,ES6语法,包详细

进阶ES6 作用域的概念加深对js理解 let、const申明的变量&#xff0c;在花括号中会生成块作用域&#xff0c;而var就不会生成块作用域 作用域链本质上就是底层的变量查找机制 作用域链查找的规则是:优先查找当前作用域先把的变量&#xff0c;再依次逐级找父级作用域直到全局…...

Scrum方法论指导下的Deepseek R1医疗AI部署开发

一、引言 1.1 研究背景与意义 在当今数智化时代&#xff0c;软件开发方法论对于项目的成功实施起着举足轻重的作用。Scrum 作为一种广泛应用的敏捷开发方法论&#xff0c;以其迭代式开发、快速反馈和高效协作的特点&#xff0c;在软件开发领域占据了重要地位。自 20 世纪 90 …...

Captain AI系统核心优势及功能支撑,对比凸显价值

在OZON跨境电商运营过程中&#xff0c;运营工具的选择直接影响运营效率、决策质量与成本控制。传统运营工具多存在功能单一、操作繁琐、适配性不足等问题&#xff0c;难以满足商家全流程运营需求。而Captain AI系统凭借其全链路整合、智能化赋能、场景化适配的独特优势&#xf…...

当PM凌晨提需求时,我的自动化回复机器人亮了:一名测试工程师的“静默”反击与效能革命

深夜&#xff0c;手机屏幕的冷光骤然亮起&#xff0c;一条来自产品经理&#xff08;PM&#xff09;的即时消息弹窗&#xff0c;像一枚投入平静湖面的石子&#xff0c;精准地击碎了凌晨两点钟的睡眠。消息简洁&#xff0c;甚至带着一丝不容置疑的“理所应当”&#xff1a;“紧急…...

避坑指南:辰华CHI软件宏命令(Macro Command)编写与调试的5个常见错误

辰华CHI宏命令实战避坑手册&#xff1a;5个高频错误解析与调试技巧 在电化学测试领域&#xff0c;辰华CHI软件的宏命令功能一直是科研人员的得力助手&#xff0c;但就像任何强大的工具一样&#xff0c;它也可能成为效率黑洞——当你在凌晨三点的实验室里&#xff0c;面对满屏红…...

Liunx创建挂载步骤

1. 查看磁盘情况lsblk # 查看所有块设备 fdisk -l # 查看磁盘分区详情&#xff08;需 root&#xff09;2. 分区&#xff08;以 /dev/sdb 为例&#xff09;fdisk /dev/sdb进入交互界面后&#xff1a;n → 新建分区p → 主分区&#xff08;或 e 扩展分区&#xff09;回车接受默认…...

Bidili Generator图片生成工具:5分钟快速部署,小白也能玩转SDXL定制化AI绘画

Bidili Generator图片生成工具&#xff1a;5分钟快速部署&#xff0c;小白也能玩转SDXL定制化AI绘画 1. 引言&#xff1a;让AI绘画变得简单 你是否曾经羡慕那些能够用AI生成精美图片的技术达人&#xff1f;现在&#xff0c;这一切变得前所未有的简单。Bidili Generator是一款…...

别再买错芯片了!全志A40i平台USB-WiFi选型与RTL8188FU/FTV驱动移植避坑指南

全志A40i平台USB-WiFi选型与驱动移植实战指南 在嵌入式设备开发中&#xff0c;Wi-Fi模块选型往往是最容易被低估的环节。许多工程师习惯性地认为"只要芯片型号对得上就能用"&#xff0c;直到项目进度被卡在驱动兼容性问题上才追悔莫及。全志A40i平台作为工业级SoC的典…...

从零到一:基于Spring Cloud Alibaba + Nacos + Sentinel的电商秒杀系统实战

从零到一&#xff1a;基于Spring Cloud Alibaba Nacos Sentinel的电商秒杀系统实战 秒杀场景一直是电商系统中最具挑战性的业务场景之一。想象一下&#xff0c;当某款热门商品以极低价格限量发售时&#xff0c;瞬间涌入的流量可能达到平时系统的数十倍甚至上百倍。这种突发的…...

用OpenCV和Python搞定红绿灯识别:从视频处理到轮廓检测的完整实战

基于OpenCV的智能红绿灯识别系统实战&#xff1a;从视频处理到实时检测 红绿灯识别是计算机视觉在智能交通领域的基础应用之一。想象一下&#xff0c;你正坐在电脑前&#xff0c;手头有一段行车记录仪拍摄的城市道路视频&#xff0c;如何让计算机自动识别视频中的红绿灯状态&am…...

保姆级教程:给通达信MPV版7.52加个“外挂”菜单,一键调用扫雷宝和复盘工具

通达信高阶定制指南&#xff1a;打造专属金融分析工作台 在金融投资领域&#xff0c;效率就是生命线。当大多数投资者还在多个软件间频繁切换时&#xff0c;你已经可以通过简单的配置文件修改&#xff0c;将通达信变成集行情分析、风险扫描、数据复盘于一体的超级终端。这不是简…...

OneNote到Markdown终极转换指南:5步轻松迁移你的珍贵笔记

OneNote到Markdown终极转换指南&#xff1a;5步轻松迁移你的珍贵笔记 【免费下载链接】onenote-md-exporter ConsoleApp to export OneNote notebooks to Markdown formats 项目地址: https://gitcode.com/gh_mirrors/on/onenote-md-exporter OneNote Md Exporter是一款…...