python服务调用-基于http的通信写协议(flask)-linux

news2024/11/20 4:27:37

服务器要部署一套算法, 我们的部署在该服务器上的数据平台需要调用 该算法进行一些操作,

要点主要两方面: 1.客户端发请求(同时传数据给服务). 2. 服务端的算法响应给请求,处理结束后,返回数据给客户端.这里一般第一次使用http协议的时候有点懵,其实是非常简单,我这里给了一个详细的例子,(因为我在网上看了很多资料,发现大多都是讲原理,或则例子不够详尽)

这就要考虑几个方面:

1.通信:

这里考虑用http的传输协议,因为这是短响应,并不是持续调用通信,flask框架是一个轻量化的web通信框架,所以我选择使用flask, 并使用post协议.

一般你要查一下机器上的ip地址

选择前两个的任意一个作为服务地址,比如选第二个127.0.0.1 . 端口可以任意,只要没有被占用即可,这里选9090

服务端通信部分的关键代码只有三个:
from flask import Flask,request

requestapp = Flask(__name__)
@app.route('/test', methods=['POST'])     #/test可以任意设, 请求端保持一致即可

def xxxxx():
    j_data= request.get_data()
    xxxx=func_all(j_data)
    return str(xxxx)

if __name__=="__main__":
    app.run(host='127.0.0.1',port=9090, debug=False)    这就是开启服务的代码

2.算法部署

因为已经确定使用http传输协议,所以只要定好服务及端口地址就好,像调用一个普通函数一样来进行通信.,下面接受请求端的请求,并接受两个参数,求和后返回值(要字符串),一般最好是格式话的数据返回(比如json格式),方便请求端解析数据.

(1)python算法服务(server.py)

import json


def func_all(j_data):
    data=json.loads(j_data)
 
    para1= int(data["x1"])
    para2=int(data["x2"])
    print(para1,para2)
    
    return str(para1+para2)
    


from flask import Flask, request

app = Flask(__name__)
@app.route('/test', methods=['POST'])
def just_test():
    j_data= request.get_data()
    final_result=func_all(j_data)
    return str(final_result)


if __name__=="__main__":
    app.run(host='127.0.0.1',port=9090, debug=False) 

次服务开启后,就会如上方所示等待请求

每次请求端请求一次, 服务端会执行一下,如上

客户端请求部分:

import requests
import json


data = {'x1': '5', 'x2': '33'}
data_j = json.dumps(data)

r = requests.post("http://127.0.0.1:9090/test", data=data_j)
print (r.text)

按服务端给出的服务地址及端口,来进行请求,没请求一次会得到结果.

4. 开启自启动

如果是部署在服务器上,就需要考虑实际的使用的问题,所以需要服务端的算法一直在线运行,也就是要考虑服务器每次重启后的自启动问题。

在/etc/profile.d/文件夹下创建一个sh文件。里面的run_server.py就是

#!/bin/bash


python /home/xxx/run_server.py

其中run_server.py就是执行了server.py,这里考虑灵活性,所以加了run_server.py, run_server.py里面可以写入要执行的那些文件。这里仅执行一个server.py文件。

run_server.py文件如下:

import os
import subprocess


os.system("conda activate env_add")  #这里为了切换到server的conda环境,如果不想切换环境,可以在默认的环境中增加如下的命令,就是安装需要的依赖库
#os.system("pip install flask")

subprocess.run(["python", "/home/xxxxx/server.py"])#根据需要可以增加需要执行的程序,这里只执行这一个脚本文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/72035.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于HTML+CSS+JavaScript “小味鲜“餐厅网页设计

基于HTMLCSSJavaScript "小味鲜"餐厅网页设计 每博一文案 师父说“生活中的负能大多来于圈子里的抱怨“,有时候,你不想做别人情绪的垃圾桶。 却不得不接受他们的吐槽,你嫌弃身边人无休止的抱怨,但又不知不觉被他们影响 …

12.感知机以及多层感知机(MLP),激活函数

x和w都是向量&#xff0c;b是标量&#xff0c;感知机的输出是&#xff1a;w和x做内积之后偏移b&#xff0c;最后加上一个函数&#xff08;这个函数很多种选择&#xff09;。 1. 训练感知机 如果当前是第i个样本&#xff0c;yi是真实标签值&#xff0c;<w,xi>b得到的是预测…

浅浅的分析Spring底层事务原理

Spring事务底层原理一、EnableTransactionManagement工作原理二、Spring事务基本执行原理三、Spring事务的过程四、Spring事务传播机制五、Spring事务传播机制分类&#xff08;1&#xff09;案例分析、情况1&#xff08;2&#xff09;案例分析、情况2&#xff08;3&#xff09;…

【正点原子FPGA连载】第三十二章OV5640摄像头RGB-LCD显示实验 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

1&#xff09;实验平台&#xff1a;正点原子MPSoC开发板 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id692450874670 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第三十二章OV564…

深度学习——批量归一化(笔记)

主流的卷积网络基本都设计批量归一化这个层 1.为什么要批量归一化&#xff1f; ①网络层很深&#xff0c;数据在底层&#xff0c;损失函数在最顶层。反向传播后&#xff0c;顶层的梯度大&#xff0c;所以顶层训练的较快。数据在底层&#xff0c;底层的梯度小&#xff0c;底层训…

【开源项目】震惊JDBC查询比MyBatis查询慢

震惊JDBC查询比MyBatis查询快&#xff1f; 文章编写起始原因&#xff0c;在编写项目的时候碰到一个深坑&#xff0c;JDBC获取5000条数据&#xff0c;居然耗时261s&#xff0c;MyBatis同样的操作&#xff0c;耗时12s左右&#xff0c;震惊。看到这里下巴都快掉下来了。不是网上都…

Pyqt5 Key value动态创建 QTreeWidget

在自己的应用上&#xff0c;需要根据读取的 值来创建 目录与子页&#xff0c;并打开对应的界面 实现思路 1、定义数组 存放 &#xff5b;&#xff08;Key value index &#xff09;.....&#xff08;Key_n value_n index_n &#xff09;&#xff5d; 2、获取相关数据&#x…

【Java开发】 Spring 09 :Spring Data REST 实现并访问简单的超媒体服务

Spring Data REST 是提供一个灵活和可配置的机制来编写可以通过HTTP公开的简单服务&#xff0c;简单来说&#xff0c;而且可以省去大部分controller和services的逻辑&#xff0c;因为Spring Data REST 已经为你都做好了&#xff0c;目前支持JPA、MongoDB、Neo4j、Solr、Cassand…

Ribbon负载均衡

Ribbon负载均衡 Ribbon是微服务架构中&#xff0c;可以作为负载均衡的技术实现&#xff0c;如下图所示 Ribbon负载均衡 1、消费者发起请求2、被负载均衡拦截器拦截3、将请求信息交给RibbonLoadBanlancerClient4、获取url的服务id5、DynamicServerListLoadBalancer拿到id去eur…

java基础巩固-宇宙第一AiYWM:为了维持生计,架构知识+分布式微服务+高并发高可用高性能知识序幕就此拉开(二:网关balabala)~整起

上集&#xff0c;在架构知识分布式微服务高并发高可用高性能知识序幕就此拉开&#xff08;一&#xff1a;总览篇&#xff09;中&#xff0c;说到了 当用户请求过来时&#xff0c;这个请求或者说URL先到服务调用端【咱们之前的项目中的Controller其实就算是一个服务调用方&#…

VMware ESXi 8.0 SLIC Unlocker 集成网卡驱动和 NVMe 驱动 (集成驱动版)

发布 ESXi 8.0 集成驱动版&#xff0c;在个人电脑上运行企业级工作负载 请访问原文链接&#xff1a;VMware ESXi 8.0 SLIC & Unlocker 集成网卡驱动和 NVMe 驱动 (集成驱动版)&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysi…

【Pytorch】第 3 章 :进行数值估计的蒙特卡洛方法

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

Java ssh框架 mysql实现的进销存管理系统源码+运行教程+文档

今天给大家演示一下一款由sshmysql实现的进销存管理系统&#xff0c;其中struts版本是struts2&#xff0c;这个系统的功能非常完善&#xff0c;简直可以说是牛逼&#xff0c;到了可以用于企业直接商用的地步&#xff0c;此外该项目还带有完整的论文&#xff0c;是Java学习者及广…

Spark 初识

文章目录Spark 初识Spark是什么Apache Spark演变为什么使用Spark全快Spark组件Spark CoreSpark SQLSpark StreamingSpark MLlibSpark GraphXSparkRpySparkspark 在数仓的应用总结Spark 初识 从今天开始我们进入数据仓库的查询引擎篇了&#xff0c;前面我们已经写了大量的文章介…

三分钟了解LAP编程框架

针对Java开发者的灵魂拷问&#xff1a; 1、梳理的流程&#xff0c;关键逻辑是否有遗漏&#xff0c;理解一致吗&#xff1f; 2、设计时&#xff0c;如何更方便的与产品沟通&#xff1f;原有的设计是否有不合理的&#xff1f;绘制的流程图大家都能理解吗&#xff1f; 3、测试时&a…

316页11万字AI赋能智慧水利大数据信息化平台建设和运营解决方案

第一章 系统综述 1.1 项目背景 1.2 系统概述 1.3 需求分析 1.3.1 中心管控需求 1.3.2 前端监测需求 1.4 建设目标 1.5 设计原则 1.6 设计依据 第二章 系统总体设计 2.1 总体设计思路 2.2 架构设计 2.2.1 逻辑架构 2.2.2 系统架构 2.3 关键技术应用 2.4 系统特色…

代码随想录刷题|LeetCode 647. 回文子串 516.最长回文子序列

647. 回文子串 题目链接&#xff1a;https://leetcode.cn/problems/palindromic-substrings/ 思路 动态规划思路 1、确定dp数组 布尔类型的dp[i][j]&#xff1a;表示区间范围[i,j] &#xff08;注意是左闭右闭&#xff09;的子串是否是回文子串&#xff0c;如果是dp[i][j]为tr…

【真的?】用 ChatGPT 写一篇 Python 翻译库博客,可以打 9 分

今天来个大的实践项目&#xff0c;用 ChatGPT 写一篇博客&#xff0c;冲击一下热榜&#xff01; 从零开始玩 ChatGPT⛳️ ChatGPT 亮点⛳️ 账号篇⛳️ 第一次使用⛳️ 用 Python 实现一个英汉互译的小程序⛳️ googletrans 库核心用法⛳️ 再补充一些知识点⛳️ googletrans 和…

功率放大电路和电压放大电路的区别是什么意思

功率放大电路和电压放大电路都属于模拟电路&#xff0c;是工程师日常经常用到的比较常见的模拟电路&#xff0c;很多小白工程师对于功率放大电路和电压放大电路的区别都很好奇&#xff0c;下面就来看看区别有哪些。 图&#xff1a;功率放大电路与电压放大电路对比 1、功能和基本…

docker之网络配置

目录一、网络模式1.bridge模式(默认模式)2.host模式3.初识网络模式二、bridge模式三、host模式四、自定义网络一、网络模式 Docker在创建容器时有四种网络模式&#xff1a;bridge/host/container/none&#xff0c;bridge为默认不需要用–net去指定&#xff0c;其他三种模式需要…