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

谁家网站用户体验做的好上海到北京火车时刻表查询

谁家网站用户体验做的好,上海到北京火车时刻表查询,wordpress 邮件美化,做外国网站技术博客标题: 《FastAPI gRPC 全栈实践:Windows 开发到 Ubuntu 部署全指南》 环境搭建与开发流程 一、Windows 11 开发环境搭建 安装 Python 3.9 官网下载安装包:Python Downloads勾选 Add Python to PATH 创建虚拟环境 python -m venv …

技术博客标题:

《FastAPI + gRPC 全栈实践:Windows 开发到 Ubuntu 部署全指南》


环境搭建与开发流程

一、Windows 11 开发环境搭建
  1. 安装 Python 3.9+

    • 官网下载安装包:Python Downloads
    • 勾选 Add Python to PATH
  2. 创建虚拟环境

    python -m venv fastenv
    fastenv\Scripts\activate
    
  3. 安装依赖

    pip install fastapi uvicorn[standard] grpcio grpcio-tools protobuf requests
    

二、项目结构
FASTAPI_GRPC_DEMO/
├── server/                  # 服务端代码
│   ├── main.py              # FastAPI 主入口
│   ├── grpc_server.py       # gRPC 服务实现
│   └── protos/              # Proto 文件目录
│       └── demo.proto
├── client/                  # 客户端代码
│   ├── rest_client.py       # REST 测试客户端
│   └── grpc_client.py       # gRPC 测试客户端
└── generated/               # 自动生成的 gRPC 代码

三、服务端开发

1. 定义 gRPC Proto 文件 (server/protos/demo.proto)
syntax = "proto3";package demo;service DemoService {rpc GetMessage (Request) returns (Response) {}
}message Request {string name = 1;
}message Response {string message = 1;
}
2. 生成 gRPC 代码
python -m grpc_tools.protoc -I server/protos/ \--python_out=generated \--grpc_python_out=generated \server/protos/demo.proto
3. 实现 gRPC 服务 (server/grpc_server.py)
from concurrent import futures
import grpc
from generated import demo_pb2, demo_pb2_grpcclass DemoService(demo_pb2_grpc.DemoServiceServicer):def GetMessage(self, request, context):return demo_pb2.Response(message=f"gRPC: Hello {request.name}!")def serve():server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))demo_pb2_grpc.add_DemoServiceServicer_to_server(DemoService(), server)server.add_insecure_port("[::]:50051")server.start()print("gRPC Server running on port 50051")server.wait_for_termination()
4. 实现 REST 服务 (server/main.py)
from fastapi import FastAPI
import threading
from grpc_server import serve as run_grpc_serverapp = FastAPI()# 启动 gRPC 服务的线程
grpc_thread = threading.Thread(target=run_grpc_server, daemon=True)
grpc_thread.start()@app.get("/hello/{name}")
async def hello(name: str):return {"message": f"REST: Hello {name}!"}

四、客户端测试

1. REST 客户端 (client/rest_client.py)
import requestsresponse = requests.get("http://localhost:8000/hello/FastAPI")
print("REST Response:", response.json())
2. gRPC 客户端 (client/grpc_client.py)
import grpc
from generated import demo_pb2, demo_pb2_grpcchannel = grpc.insecure_channel('localhost:50051')
stub = demo_pb2_grpc.DemoServiceStub(channel)
response = stub.GetMessage(demo_pb2.Request(name="gRPC"))
print("gRPC Response:", response.message)

五、运行与测试

  1. 启动服务端

    uvicorn server.main:app --reload --port 8000
    
    • 输出:gRPC Server running on port 50051
  2. 测试 REST API

    python client/rest_client.py
    # 输出: REST Response: {'message': 'REST: Hello FastAPI!'}
    
  3. 测试 gRPC

    python client/grpc_client.py
    # 输出: gRPC Response: gRPC: Hello gRPC!
    

六、Ubuntu 24 部署

1. 服务器准备
# 更新系统
sudo apt update && sudo apt upgrade -y# 安装 Python
sudo apt install python3.10-venv python3-pip -y
2. 部署应用
# 克隆代码
git clone https://your-repo-url.git
cd FASTAPI_GRPC_DEMO# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate# 安装依赖
pip install -r requirements.txt# 生成 gRPC 代码
python -m grpc_tools.protoc -I server/protos/ \--python_out=generated \--grpc_python_out=generated \server/protos/demo.proto
3. 使用 Systemd 管理服务

创建服务文件 /etc/systemd/system/fastapi-grpc.service

[Unit]
Description=FastAPI + gRPC Service
After=network.target[Service]
User=ubuntu
WorkingDirectory=/opt/FASTAPI_GRPC_DEMO
ExecStart=/opt/FASTAPI_GRPC_DEMO/venv/bin/uvicorn server.main:app \--host 0.0.0.0 --port 8000
Restart=always[Install]
WantedBy=multi-user.target
4. 启动服务
sudo systemctl daemon-reload
sudo systemctl start fastapi-grpc
sudo systemctl enable fastapi-grpc

七、供 .NET Core 调用的接口说明

1. REST API
  • Endpoint: GET /hello/{name}
  • 请求示例:
    using var client = new HttpClient();
    var response = await client.GetAsync("http://your-ip:8000/hello/NetCore");
    var content = await response.Content.ReadAsStringAsync();
    // 输出: {"message": "REST: Hello NetCore!"}
    
2. gRPC 调用
  1. demo.proto 添加到 .NET 项目
  2. 安装 NuGet 包:
    Install-Package Grpc.Net.Client
    Install-Package Google.Protobuf
    
  3. 调用示例:
    using var channel = GrpcChannel.ForAddress("http://your-ip:50051");
    var client = new DemoService.DemoServiceClient(channel);
    var reply = client.GetMessage(new Request { Name = "NetCore" });
    Console.WriteLine(reply.Message); // 输出: "gRPC: Hello NetCore!"
    

关键点说明

  1. 双协议支持
    • REST 使用 FastAPI 原生支持
    • gRPC 通过独立线程运行
  2. 跨平台部署
    • Windows 开发环境快速测试
    • Ubuntu 生产环境用 Systemd 守护进程
  3. .NET Core 集成
    • REST 直接通过 HTTP 调用
    • gRPC 需通过 Proto 文件生成客户端

文章转载自:

http://XNaraGgn.qztdz.cn
http://7bjvqsPY.qztdz.cn
http://PHm9nrs3.qztdz.cn
http://tiiLkhGp.qztdz.cn
http://nOpaww6P.qztdz.cn
http://u4Nqlvkr.qztdz.cn
http://4jkwnLp6.qztdz.cn
http://oiV0Vr02.qztdz.cn
http://fucHakwi.qztdz.cn
http://AE6KSS1M.qztdz.cn
http://wYZyQzgE.qztdz.cn
http://zHypZVwN.qztdz.cn
http://Exf4QTBK.qztdz.cn
http://IJ1oCg1a.qztdz.cn
http://9NA0Cpsf.qztdz.cn
http://qMjTPIVi.qztdz.cn
http://QuhcwtJc.qztdz.cn
http://pyTOOSZ0.qztdz.cn
http://5XQMsDU7.qztdz.cn
http://k5Ykref8.qztdz.cn
http://OccCDSol.qztdz.cn
http://TUXcPhXb.qztdz.cn
http://CHpHgGgS.qztdz.cn
http://bqBexmfr.qztdz.cn
http://NSER0HXM.qztdz.cn
http://sDkv8oEa.qztdz.cn
http://nlIAUS8T.qztdz.cn
http://2sCWBXgi.qztdz.cn
http://Ngz03HIa.qztdz.cn
http://s8mMsfnQ.qztdz.cn
http://www.dtcms.com/wzjs/668591.html

相关文章:

  • 纯静态网站河北邢台wap网站建设
  • 医药销售网站开发背景福建省效能建设网站
  • 网站建设设计原则湖北省建设部网站
  • 1m带宽做网站怎么样wordpress 论坛偷笑
  • c 网站开发案例详解百度云社群运营的经典案例
  • cms做淘宝客网站做擦边球网站赚钱么
  • 江西建设监督网新网站网站下载免费软件
  • wordpress网站内容企业网站打包下载
  • 搭建自己的网站杭州鼎易做的网站
  • 最近一周新闻热点大事件网站seo策划
  • 好好建站软文发布平台媒体
  • 网站建设所面临的问题wordpress 去除 p
  • 做广告在哪个网站做效果人流最多最好看免费观看高清大全追风者
  • 页面做的比较炫酷的网站网站网页制作及优化
  • 最稳定的免费的资源共享网站建站行业已死
  • 福州网站建设自助建站无人在线观看高清视频 单曲
  • 建设公司网站的要点太原手机模板建站
  • 网站设计样例代理记账一个月多少钱一个月
  • 杭州网站界面设计wordpress数据库进不去
  • 中山网站建设平台电子平台网站
  • 许昌小学网站建设学校 门户网站建设方案
  • 建设网站需要了解些什么问题wordpress怎么上传自己的网站吗
  • 合肥建设局网站领导怎么在天猫注册开店铺
  • 专业网站建设信息页面升级紧急通知自动跳转中
  • 网站seo站群软件企业门户网站建设报告
  • 沈阳行业网站建设昆明广告设计公司排行
  • 大气医院网站源码app开发用什么框架
  • 建设网站公司那里好相关的热搜问题解决方案WordPress推送至QQ
  • 企业网站设计概念北京建设集团网站首页
  • 企业网站推广方法有哪些延津县建设局网站