django与grpc融合的过程

一、通过socket将grpc接收的数据传输到django中

# django+grpc+socket(服务端给客户端发送文件) 配置过程# 将socket的服务端作为一个线程,放在grpc服务端下,一起启动# 将socket的客户端作为一个模块,直接嵌入在websocket的while True循环之下接收数据并传输到页面端

二、直接融合

django+grpc配置过程# 首先利用data.proto生成两个文件,放在python安装目录包下(即Lib--》site-packet下)# 将grpc的服务端作为一个线程,方法websocket下。

如下:

# class ServerGreeter(data_pb2_grpc.dataServicer):
#     def serving(self, request, context):
#         print('serving...',datetime.datetime.fromtimestamp(time.time()))
#         # logging.info('serving...')
#         data_64 = base64.b64decode(request.cmd)
#         data_str=data_64.decode()
#         q.put(data_str)
#         return data_pb2.data_reply(values="ok")
#
# def grpc_connect():
#     server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
#     # 在服务器中添加派生的接口服务(自己实现了处理函数)
#     data_pb2_grpc.add_dataServicer_to_server(ServerGreeter(), server)
#     # 添加监听端口
#     myname = socket.gethostname()
#     myip = socket.gethostbyname(myname)
#     server.add_insecure_port('127.0.0.1' + ':' + '9001')
#     print('myip:', myip)
#     # 存储数据线程
#     # t = threading.Thread(target=data_manage, args=())
#     # t.start()
#     # # 发送数据给web前端线程
#     # t1 = threading.Thread(target=send_data, args=())
#     # t1.start()
#     server.start()
#     try:
#         while True:
#             time.sleep(60 * 60 * 24)
#     except KeyboardInterrupt:
#         server.stop(0)
# @accept_websocket
# def echo(request):
#     if not request.is_websocket():#判断是不是websocket连接
#         try:#如果是普通的http方法
#             message = request.GET['message']
#             return HttpResponse(message)
#         except:
#             return render(request,'index.html')
#     else:
#         for message in request.websocket:
#             t = threading.Thread(target=grpc_connect, args=())
#             t.start()

调试经验:

# 一般不关闭socket
# 遇到异常不处理可用pass
# 定位到While True:进行调试
# 启动客户端,调试服务端
# 启动服务端,调试客户端

 

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

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

相关文章

Jmeter之json条件提取实战(三)

有时我们想通过接口响应数据中的默写条件进行提取对应的字段,这时,就可以用到json条件提取,可以提取对应的值进行使用或迭代。 接口请求地址: sh.lianjia.com/api/newhouserecommend?type1&queryhttps%3A%2F%2Fsh.lianjia.…

python 手动拼接json数据

第一步:分别拼接为字符串 第二步:将字符串转化为list 第三歩:将两个list合并为dict 第四步:将dict转换为接送数据 如: import json keys [a, b, c] values [1, 2, 3] dictionary dict(zip(keys, values)) j …

Python格式化函数format详解

format用法 相对基本格式化输出采用‘%’的方法,format()功能更强大,该函数把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’使用方法由两种:b.format(a)和format(a,b) fo…

django后端用websocket传输数据

1、websocket服务端发送数据好像只能传输str类型数据。所以先将数据利用json.dumps()进行打包操作 json_data json.dumps(data) 2、websocket客户端接收数据时需要先将json对象进行解码。利用 var obj_temp JSON.parse(str); //由JSON字符串转换为JSON对象 此时若在界面直…

Python自动化测试问题及处理方法(一)

一、接口自动化测试中,会用到测试账号,如何合理运用账号? 账号一般用于接口登录、接口用例传参、操作sql等,目前账号是写到yaml配置文件里,如果1个账户使用会出现资源冲突,可以配置多个账号使用&#xff0…

Python自动化测试|如何解决前置模块及数据依赖(二)

在做接口自动化测试时,遇到下面这个疑惑,然后再群里请教了大家,讨论如下,可以参考下: 讨论1: 上海—橙子探索测试 10:12:34 自动化测试中,提现接口一般会依赖前置功能实名认证、绑卡、设置交易…

django启动时同时使用Schedule启动其他程序

1、安装Schedule 打开cmd输入: pip install schedule 2、打开django项目的views.py 导入模块 from apscheduler.scheduler import Scheduler 输入如下代码: sched Scheduler() # 实例化,固定格式 # sched.interval_schedule(days1,s…

Pytest框架集成Allure定制测试报告详解(一)

Allure简介 Allure是一款非常轻量级并且非常灵活的开源测试报告生成框架。 它支持绝大多数测试框架, 例如TestNG、Pytest、JUint等。它简单易用,易于集成。下面就Pytest如何与Allure集成做详细介绍。 Pytest框架集成Allure Pytest是Python的单元测试框架…

div里面放ul,使ul横向和纵向滚动

js代码: .infoShow{border:1px solid #000;overflow-y:auto;height:340px;}.infoShow ul{margin:0px;padding:0px;float:left;white-space: nowrap;overflow:hidden;}.infoShow ul li{float: left;text-align:left;list-style:none;display: inline;} 注意&#xf…

Pytest+Allure+Jenkins接口自动化项目实战(一)

经过一周多时间,基于pythonpytestexcelallure框架的接口自动化测试初版已基本实现,包括基本配置读取、用例读取、用例执行、sql读取执行、前置数据准备、后置数据清理以及测试报告生成等,环境独立运行、项目独立运行、用例独立运行、jenkins集…

服务器测试网址填写注意事项

1、若服务器和客户端都在本机,则测试ip可用127.0.0.1 2、若服务器在电脑A,客户端在电脑B,则首先A、B电脑需要在同一局域网上,然后测试网址分别为各自ip 3、若是发布在云端,则应使用0.0.0.0 4、django项目的启动命令…

Jmeter BeanShell取样器操作变量(一)

vars: 引用Jmeter线程的局部变量,将 局部变量 改为 全局变量 亦可达到引用全局变量的效果, 连通Jmeter 和 beanshell string user vars.get("user")//获取变量,保存变量 vars.put(String key, String value&#xf…

echarts3 loading动画无法去除解决方案

解决方案一: 不使用showloading,判断传入数据是否为空。 若数据为空,覆盖一层div。 若数据不为空,则隐藏div 解决方案2: 利用echarts的graphic。初始化是加入graphic。有数据时再利用id移除掉graphic。 初始化时&…

Jmeter Beanshell采样器调用JAVA方法(二)

BeanShell Sampler调用添加的java方法 1、BeanShell Sampler里添加java方法 public static String test() {vars.put("jmeter1","111");vars.put("jmeter2","222");vars.put("jmeter3","333");vars.put("j…

grpc服务器和客户端互传数据

一、客户端给服务器传数据 1、data.proto syntax proto3; // 服务定义 service data{// 函数定义 data_request参数 data_reply返回数据rpc serving(data_request) returns (data_reply) {} } message data_request{string cmd 1; } message data_reply{string values 1; } …

Jmeter BeanShell采样器提取接口响应并传递(三)

1、将fastjson-1.2.68.jar放置C:\jmeter\apache-jmeter-5.0\lib路径下 2、CSV 数据文件设置多个手机号 3、添加登录接口,${mobile}调用2种的mobile值 4、登录接口响应数据 5、BeanShell 取样器提取登录接口响应数据 //导入json包 import com.alibaba.fastjson.JSON…

pymysql.err.InternalError: (1054, Unknown column '27D24A3B' in 'where clause')之错误解决

原代码: query_image_path1SELECT imageTempFilename_0,imageTempFilename_1 FROM %s% tablename query_image_path2 where IDprojectTemp%s and IDproject%s and cameraID%s and imageflag%s%(IDprojectTemp,IDproject,cameraID,imageflag) query_image_path_sqlq…

Jmeter BeanShell采样器提取接口响应写入csv文件(四)

1、调用登录接口获取response数据 {"code":0,"msg":"成功","data":{"token":"bearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9tZW1iZXItYXBpLnN0MS50ZXN0LmxhbnhpbmthLmNvbVwvMi4wXC91c2Vyc1wvb…

js 给动态li添加动态点击事件

一、给动态li添加动态点击事件 试了网上的on,live,bind绑定&#xff0c;都不起作用。最后看到https://bbs.csdn.net/topics/390414057 上的代码。试了一遍&#xff0c;demo ok。 附上demo&#xff1a; <!DOCTYPE html> <html xmlns"http://www.w3.org/1999/…

Jmeter JDBC Request执行多条SQL语句

之前写过Jmeter操作mysql的文章https://blog.csdn.net/qq_36502272/article/details/88891873今天我们再看下如何操作多条sql语句 1、添加JDBC Connection Configuration并配置 Database URL为MySQL的连接串&#xff0c;如果要执行多条SQL语句&#xff0c;后面还要添加“?al…