python无web框架接口通信

2023-11-05

# 1、发送

def image_to_base64(image_np):
    image = cv2.imencode(".jpg", image_np)[1].tobytes()
    base64_data = base64.b64encode(image)
    base64_data = base64_data.decode()
    return base64_data


#async异步同构,可以视为多开了一个线程
async def send(name, image):
    
    #data字典中key叫字段,需要和后端确定要传输哪些数据和字段
	#这里面图片被转为base64,图片的二进制数据形式传输
    data = {
        "userName": name,
        "downWordImg": image_to_base64(image),
        "downWordTime": time.strftime("%Y-%m-%d %H:%M:%S")
    }
    try:
        
    	#self.url为URL.txt中的url,这个接口路径和后端要就行   
		#如 http://192.168.3.39:8080/python/judge/test
		#该url由ip,端口和路由指向组成
		#这是一个post请求,会把data字典里的数据发给后端
        response = requests.post(self.url, json=data).text
        
        print(f"{time.strftime('%Y-%m-%d %H:%M:%S')}:\t{name}")
    except Exception as e:
        print('send fail with {}'.format(e))
        return

# 2、接收

from wsgiref.simple_server import make_server
import json

#这个接口编写未使用任何框架,基于WSGI,用于获取后端请求的数据
def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    
    #request_body里保存了所有请求字段,请求头、状态码、数据等
    request_body = environ["wsgi.input"].read(int(environ.get("CONTENT_LENGTH", 0)))
    request_body = json.loads(request_body)
    # for key,value in enumerate(environ):
    #     print(key)
    #     print(value)
    if 'data' not in request_body.keys():
        return [b'<h1>Invalid data!</h1>']
    else:
        data = request_body['data']

        body = json.dumps({'data': data})
        print(body.encode("utf-8"))
        return [body.encode("utf-8")]
def run():
    http = make_server('0.0.0.0', 5000, application).serve_forever()


if __name__ == '__main__':
    run()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python无web框架接口通信 的相关文章

随机推荐

  • java如何进阶?

    这篇回答没有长篇大论的 Java 进阶学习路线推荐 作为纯靠自学获得大厂 offer 的过来人 给几点建议 1 一定要动手实践 2 避免货物崇拜编程 3 提高系统设计能力 4 造轮子 5 深入学习 学会总结沉淀 当然也是需要扎实的基础的 例
  • C++标准模板库(STL)介绍与常见STL用法总结

    C 标准模板库 STL 介绍与常见STL用法总结 一 简介 STL是 C 标准模板库 Standard Template Library 的缩写 STL是C 为使用者提供的实现好的容器 包括vector 队列 栈 string等 掌握其对于
  • suse 内核编译安装_教你如何快速编译安装Linux新内核

    随着内核版本的更新换代 你是否有觉得自己的内核版本有些低了呢 如果有的话 没关系 今天小编就来教大家如何编译安装新的内核 在编译安装Linux内核之前先检查我们的虚拟机所在的磁盘空间 预留空间10G以上 不然编译安装内核无法完成 下面我们就
  • 如何优雅的打印数组

    如何优雅的打印数组 以下文章来源于沉默王二 作者沉默王二 https mp weixin qq com s 20s0XSsdUE2qJDP4OtM rw 在 Java 中 数组虽然是一个对象 但并未明确的定义这样一个类 因此也就没有覆盖 t
  • Linux在应用层读写寄存器的方法及/dev/mem分析

    1 Linux在应用层读写寄存器的方法 转自 https blog csdn net liukang325 article details 26601811 可以通过操作 dev mem设备文件 以及mmap函数 将寄存器的地址映射到用户空
  • Go-OpenWrt获取wan口ip、dns、网关ip

    Go OpenWrt获取wan口ip dns 网关ip 文章目录 Go OpenWrt获取wan口ip dns 网关ip 1 前言 2 解决方案思路 3 代码 1 前言 一般来说 Openwrt可以配置多个wan口和多个lan口 这里获取的
  • Vue父子组件通过prop异步传输数据踩坑

    今天碰到vue开发父子组件通信的一个小坑 情况是这样的 子组件使用echart展示图表 所需options由父组件通过prop传入 父组件中的options初始值为空 在mounted钩子函数中发起http请求获取数据然后更新options
  • Qt制作简单的无边框登陆窗口

    使用qt做简单的登录窗口 环境 win10 Qt5 创建项目 选择Widget类 勾选ui界面 因为我是用的默认类名所以类名是Widget 以下是Widget h ifndef WIDGET H define WIDGET H includ
  • 离散方法介绍

    离散成 的方法存在很多 但是各个方法直接存在优劣 从两方面进行参数比较 方面 1 从零点和极点 2 环节的频率响应 幅频和相频特性 系统控制方面 评价离散方法的参数 1 主导零 极点 2 系统带宽或者穿越频率 3 直流增益 4 增益裕度 5
  • Python采集世界大学排行榜,做数据可视化,来看看你的大学上榜没

    前言 这不是最近疫情又开始了 马上也要过年了 就是说很多大学都开始准备放假了吧 我有个表妹下周二就放寒假了哈哈 感觉现在读书寒假可长了 今天有点无聊 就来 爬取一下世界大学排行榜 做数据可视化 看看你们的学校上榜没 知识点 动态数据抓包 r
  • Algorithm oj 全集(已过oj)

    Algorithm oj 分治策略 作业1 找出数组中第 k 小的数 总提交数 616次 通过数 188次 通过率 30 52 内存限制 104857600 BYTE 时间限制 10000 MS 输入限制 1000 行 输出限制 1000
  • 【我的面试-01】Web前端开发实习岗-面试题总结

    简单开头 首先技术面试官会根据简历里所写的项目和个人掌握技术栈提问 我不知道已经改过多少次简历了 因为前期投简历是真的是沉在茫茫大海 捞漂流瓶都捞不到的那种 我的技术栈 Vue还在苦苦的自学当中 随便推荐一下coderwhy老师B站的教学视
  • 通过反射获取一个对象的属性值三种方法比较

    这里写目录标题 为何要写这篇博客 数据准备 方法实践 总结 为何要写这篇博客 反射机制的用途非常多 比如获取方法 属性名和属性值等 甚至可以获取标签等标签属性 今天来比较几种获取实例化对象的属性值方法 数据准备 Builder FieldD
  • C++的cout高阶格式化操作

    敬告 当您的浏览器以非默认字体浏览本文时 段落格式可能会出现偏差 这篇文章主要讲解如何在C 中使用cout进行高级的格式化输出操作 包括数字的各种计数法 精度 输出 左或右对齐 大小写等等 通过本文 您可以完全脱离scanf printf
  • 攻防世界-WEB新手练习区教程(二)

    目录 攻防世界 WEB新手练习区教程 二 simple js xff referer weak auth command execution simple php 攻防世界 WEB新手练习区教程 二 simple js 进入场景 需要输入密
  • 记忆化搜索 Memorization Search

    记忆化搜索 Memorization Search 什么是记忆化搜索 记忆化搜索函数的三个特点 记忆化搜索 vs 动态规划 三种适用于DP的场景 三种不适用于DP的场景 Examples Leetcode 140 单词拆分 II Leetc
  • print.js 打印的网页单页内容,多出第二页空白页面

    问题如上图 解决过程 给table外嵌套的div设置了样式page break after也没有效果 最后索性给打印区域添加加边框 准备看看预览时空白页里有什么 结果后一页的空白页就这么没了 o 观察发现 加上边框后 table的宽度确实有
  • 【js】用正则实现一串数字用逗号隔开千分位

    此方法适用于正整数 负整数 浮点数 const formatNumberWithCommas number any gt 兼容一下传进来的number字段有可能是null undefined NaN 0的情况 当number为null un
  • .NET基础概念解释及主要体系结构

    一 NET概念详解 1 NET NET就是微软用来实现XML Web Services SOA 面向服务的体系结构service orientedarchitecture 和敏捷性的技术 NET是微软的新一代技术平台 为敏捷商务构建互联互通
  • python无web框架接口通信

    1 发送 def image to base64 image np image cv2 imencode jpg image np 1 tobytes base64 data base64 b64encode image base64 da