GoReplay中间件python版本使用教程

 更新时间:2024年02月19日 16:26:43   作者:IKun-bug  
GoReplay 是一个用于网络流量录制和回放的工具,它可以用于测试和优化分布式系统,这篇文章主要介绍了GoReplay中间件python版本使用教程,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

GoReplay的middlware原理

中间件是一个程序,它在 STDIN 上接受请求和响应负载,并在 STDOUT 上发出修改后的请求。您可以实现任何自定义逻辑,例如剥离私有数据、高级重写、支持 oAuth 等。

中间件可以用任何语言编写,请参阅examples/middleware文件夹中的示例。
中间件程序应该接受这样一个事实:所有与 Gor 的通信都是异步的,不能保证原始请求和响应消息会相继到来。如果逻辑依赖于原始或重播的响应,您的应用程序应该处理状态,请参见examples/middleware/token_modifier.go示例。

python版本环境搭建

python环境安装

首先安装python环境,由于版本 v0.2.x 不再支持 Python2.7 和 Python3.4,因此支持的最低 Python 版本为 3.5.2。此外,v0.1.x 版本仍然兼容 Python2.7 和 Python3.4。“
python版本,建议使用3.5.2以上版本。我这里演示用的Python 3.9.6

安装好python环境后,使用python3 -V查看自己的版本号,出现版本号说明环境已经安装完成

gor库环境安装

在python环境中使用pip3命令安装gor库,gor版本建议下载最新版,我这里用的是gor 0.2.3版本

pip3 install gor

如果需要使用虚拟环境,需要先进入虚拟环境再安装,pycharm自带了虚拟环境,如果当面文件存在venv文件夹说明已有虚拟环境,进入自带的虚拟环境安装

source venv/bin/activate

看到前面出现venv,说明成功进入虚拟环境

在python中导入gor库,没有报错说明gor库环境安装完成

from gor.middleware import AsyncioGor

python代码编写

首先导入gor库

from gor.middleware import AsyncioGor

然后在代码内定义三个函数,分别负责请求,响应,重播的处理

以下是一个简单的demo,具体的使用可以查看官方文档,gor官网文档

# coding: utf-8
import sys
from gor.middleware import AsyncioGor
def on_request(proxy, msg, **kwargs):
    proxy.on('response', on_response, idx=msg.id, req=msg)
def on_response(proxy, msg, **kwargs):
    proxy.on('replay', on_replay, idx=kwargs['req'].id, req=kwargs['req'], resp=msg)
def on_replay(proxy, msg, **kwargs):    
    # do anything you want with msg
    # msg is a GorMessage object
    pass
if __name__ == '__main__':
    proxy = AsyncioGor()
    proxy.on('request', on_request)
    proxy.run()

具体代码细节实现,代码里实现了三个函数分别处理请求、响应、重播等
请求部分,对请求进行重写消息头,body,param参数等,把处理完的请求url的数量
响应部分,对响应进行判断,状态码是否等于200,等于200的记录url的数量记录到日志,不等于200的url,req,res记录到日志
重播部分,对重播进行判断,状态码是否等于200,等于200的记录url的数量记录到日志,不等于200的url,req,res记录到日志使用命令启动python的middleware

goreplay中间件使用

中间件跟命令结合使用,先后顺序为,先中间件处理,处理完再使用命令进行过滤,过滤的命令应该是中间件处理完的数据,具体顺序如下

需要同时处理req、res、rep,可以使用如下命令

sudo gor --input-raw :5000 --output-file 'test.gor' --output-stdout --middleware 'python3 middleware.py' --output-http-track-response --input-raw-track-response

到此这篇关于GoReplay中间件python版本使用的文章就介绍到这了,更多相关GoReplay中间件python使用内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • 利用Python的folium包绘制城市道路图的实现示例

    利用Python的folium包绘制城市道路图的实现示例

    这篇文章主要介绍了利用Python的folium包绘制城市道路图的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Pycharm挂代理后依旧插件下载慢的完美解决方法

    Pycharm挂代理后依旧插件下载慢的完美解决方法

    狠多朋友在使用Pycharm插件时,反应下载速度很慢,挂载了代理还是不够,怎么解决这一问题呢,下面小编给大家代理了Pycharm插件下载慢的完美解决方法,需要的朋友参考下吧
    2021-08-08
  • Python面向对象的三大特性封装、继承、多态

    Python面向对象的三大特性封装、继承、多态

    这篇文章介绍了Python面向对象的三大特性封装、继承、多态,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Pycharm正版2022.2.2?官方翻译插件更新tkk失败不能用问题及解决方案

    Pycharm正版2022.2.2?官方翻译插件更新tkk失败不能用问题及解决方案

    这篇文章主要介绍了Pycharm正版2022.2.2?|?官方翻译插件更新tkk失败解决,?出现tkk问题的是这个翻译插件,本教程只解决该翻译插件不能用的问题,需要的朋友可以参考下
    2022-11-11
  • Python3 io文本及原始流I/O工具用法详解

    Python3 io文本及原始流I/O工具用法详解

    这篇文章主要介绍了Python3 io文本及原始流I/O工具用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • python 如何用map()函数创建多线程任务

    python 如何用map()函数创建多线程任务

    这篇文章主要介绍了python 使用map()函数创建多线程任务的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • python二分查找搜索算法的多种实现方法

    python二分查找搜索算法的多种实现方法

    二分查找,也称折半查找,是一种效率较高的查找方法,本文主要介绍了python二分查找搜索算法的多种实现方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • python golang中grpc 使用示例代码详解

    python golang中grpc 使用示例代码详解

    这篇文章主要介绍了python golang中grpc 使用,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Python如何把Spark数据写入ElasticSearch

    Python如何把Spark数据写入ElasticSearch

    这篇文章主要介绍了Python如何把Spark数据写入ElasticSearch,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 使用Selenium在Python中实现录屏功能

    使用Selenium在Python中实现录屏功能

    Selenium 是一个强大的用于自动化测试的工具,但你知道它也可以用来录制浏览器操作的视频吗?本文将介绍如何使用 Selenium 在 Python 中实现录屏功能,以便记录和分享你的网页操作过程,需要的朋友可以参考下
    2023-11-11

最新评论

?


http://www.vxiaotou.com