moesif中间件,用于基于python wsgi的平台(烧瓶、瓶子和其他)

moesifwsgi的Python项目详细描述


基于python wsgi框架的moesif中间件

build for最新版本语言版本软件许可证源代码

wsgi中间件,记录传入的传出的api调用,并发送到moesif进行api分析和日志分析。 支持基于wsgi构建的python框架,如烧瓶、瓶子和金字塔。

Github上的源代码

wsgi(web服务器网关接口) 是一个描述 web服务器如何与web应用程序通信。许多python框架 是建立在wsgi之上的,例如烧瓶瓶子金字塔等等。 moesif wsgi中间件帮助在这些框架之上构建的api 很容易与moesif集成。

如何安装

pip install moesifwsgi

如何使用

烧瓶

使用moesif中间件包装您的wsgi_应用程序。

frommoesifwsgiimportMoesifMiddlewaremoesif_settings={'APPLICATION_ID':'Your Moesif Application id','LOG_BODY':True,# ... For other options see below.}app.wsgi_app=MoesifMiddleware(app.wsgi_app,moesif_settings)

您的moesif应用程序id可以在moesif门户中找到。 注册moesif帐户后,您的moesif申请ID将在入职步骤中显示。

您随时都可以通过登录找到moesif应用程序id 进入moesif门户,单击右上角菜单, 然后单击"安装"

有关Flask的示例,请参见本报告的/examples/flask文件夹中的示例。

瓶子

用moesif中间件包装您的瓶子应用程序。

frommoesifwsgiimportMoesifMiddlewareapp=bottle.Bottle()moesif_settings={'APPLICATION_ID':'Your Moesif Application Id','LOG_BODY':True,# ... For other options see below.}bottle.run(app=MoesifMiddleware(app,moesif_settings))

有关瓶子的示例,请参见本回购协议的/examples/battle文件夹中的示例。

棱锥体

frompyramid.configimportConfiguratorfrommoesifwsgiimportMoesifMiddlewareif__name__=='__main__':config=Configurator()config.add_route('hello','/')config.scan()app=config.make_wsgi_app()# configure your moesif settingsmoesif_settings={'APPLICATION_ID':'Your Moesif Application Id','LOG_BODY':True,# ... For other options see below.}# Put middlewareapp=MoesifMiddleware(app,moesif_settings)server=make_server('0.0.0.0',8080,app)server.serve_forever()

其他wsgi框架

如果您使用的是构建在wsgi之上的框架,那么只需添加moesif中间件就可以了。 请阅读有关如何添加中间件的特定框架的文档。

配置选项

应用程序ID

必需的),字符串通过您的moesif帐户获得,这是必需的。

跳过< /H4>

(可选)(app,environ)=>;布尔型,接受wsgi应用程序和environ的函数, 如果要跳过此特定事件,则返回true。应用程序是原始的wsgi应用程序实例,并且 environ是wsgi环境。

识别用户

(可选,但强烈建议)(app,environ)=>;string,该函数接受app和environ,并返回系统使用的用户ID字符串。当moesif试图自动识别用户时, 但是,不同的框架和您的实现可能会有很大的不同,提供此功能会有帮助,而且更准确。

识别公司

(可选)(a p p,environ)=>;string,接受app和environ并返回此事件的公司ID字符串的函数。

获取元数据

(可选)(app,environ)=>;字典,接受应用程序和环境的函数,以及 返回字典(必须能够编码为json)。这让你 将此事件与自定义元数据关联。例如,您可能希望将vm实例id、跟踪id或租户id与请求一起保存。

获取会话令牌

(可选)(app,environ)=>;string,接受app和environ并返回作为此事件会话令牌的字符串的函数。同样,moesif尝试自动获取会话令牌,但如果您的设置与标准非常不同,则此功能将非常有助于将事件捆绑在一起,并帮助您重播事件。

掩码事件模式

(可选)(eventmodel)=>;eventmodel,接受eventmodel并返回已删除所需数据的eventmodel的函数。返回值必须是moesif数据摄取api所需的有效eventmodel。有关eventmodel的详细信息,请参见moesif python api文档

调试

(可选)布尔型,用于查看调试消息的标志。

日志正文

(可选)布尔型,默认为true,设置为false可删除日志请求和响应正文。

捕获传出的请求

布尔型,默认为false。设置为true可捕获应用程序向第三方(如stripe)或您自己的依赖项发出的所有api调用,同时使用请求库。下面的选项适用于传出的api调用。 当请求传出时,对于将请求和响应作为输入参数的选项函数,传入的请求和响应对象是请求或响应对象。

跳过输出

(可选)(req,res)=>;布尔型,该函数接受请求和响应, 如果要跳过此特定事件,则返回true。

识别出站的用户

(可选,但强烈建议)(req,res)=>;string,该函数接受请求和响应,并返回系统使用的用户ID字符串。当moesif试图自动识别用户时, 但是,不同的框架和您的实现可能会有很大的不同,提供此功能会有帮助,而且更准确。

识别公司进行中

(可选)(req,res)=>;string,一个接受请求和响应的函数,并返回此事件的公司ID。

传出元数据

(可选)(req,res)=>;字典,接受请求和响应的函数,以及 返回字典(必须能够编码为json)。这允许 将此事件与自定义元数据关联。例如,您可能希望将vm实例id、跟踪id或租户id与请求一起保存。

获取会话令牌传出

(可选)(req,res)=>;string,一个接受请求和响应的函数,并返回此事件的会话令牌字符串。同样,moesif尝试自动获取会话令牌,但如果您的设置与标准非常不同,则此功能将非常有助于将事件捆绑在一起,并帮助您重播事件。

日志体传出

(可选)布尔型,默认为true,设置为false可删除日志请求和响应正文。

示例:

defidentifyUser(app,environ):# return the user id herereturn"my_user_id"defidentifyCompany(app,environ):# return the company id herereturn"my_company_id"defshould_skip(app,environ):if"healthprobe"inenviron.get('PATH_INFO',''):returnTrueelse:returnFalsedefget_session(app,environ):# extract session id from environ.return"session_id"defmask_event(eventmodel):# do something to remove sensitive fields# be sure not to remove any required fields.returneventmodeldefget_metadata(app,environ):return{'foo':'some data','bar':'another data',}moesif_settings={'APPLICATION_ID':'Your Moesif Application Id','DEBUG':False,'LOG_BODY':True,'IDENTIFY_USER':identifyUser,'IDENTIFY_COMPANY':identifyCompany,'GET_SESSION_TOKEN':get_token,'SKIP':should_skip,'MASK_EVENT_MODEL':mask_event,'GET_METADATA':get_metadata,'CAPTURE_OUTGOING_REQUESTS':False}app.wsgi_app=MoesifMiddleware(app.wsgi_app,moesif_settings)

更新用户

更新用户方法

moesif wsgi中间件对象附加了一个方法来更新用户配置文件或元数据。 元数据字段可以是要在用户上设置的任何自定义数据。用户ID字段是必需的。

update_user=MoesifMiddleware(app,moesif_settings).update_user({'user_id':'12345','company_id':'67890','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}})

更新"用户"批处理方法

moesif wsgi中间件对象附加了一个方法来批量更新用户配置文件或元数据。 元数据字段可以是要在用户上设置的任何自定义数据。用户ID字段是必需的。

update_users_batch=MoesifMiddleware(app,moesif_settings).update_users_batch([UserModel.from_dictionary({'user_id':'12345','company_id':'67890','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}}),UserModel.from_dictionary({'user_id':'1234','company_id':'6789','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}})])

更新公司

更新公司方法

moesif wsgi中间件对象附加了一个方法来更新公司配置文件或元数据。 元数据字段可以是要在公司上设置的任何自定义数据。公司ID字段是必需的。

update_company=MoesifMiddleware(app,moesif_settings).update_company({'company_id':'12345','company_domain':'acmeinc.com','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}})

更新"公司"批处理方法

moesif wsgi中间件对象附加了一个方法来批量更新公司概要文件或元数据。 元数据字段可以是要在公司上设置的任何自定义数据。公司ID字段是必需的。

update_companies_batch=MoesifMiddleware(app,moesif_settings).update_companies_batch([CompanyModel.from_dictionary({'company_id':'12345','company_domain':'nowhere.com','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}}),CompanyModel.from_dictionary({'company_id':'67890','company_domain':'acmeinc.com','metadata':{'email':'abc@email.com','name':'abcde','image':'123'}})])

其他集成

要查看有关集成选项的更多文档,请访问集成选项文档。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Intellij和Eclipse无法找到库工件   java Mapbox Android Symbolayer重置筛选器   java如何在顶部显示特定的recyclerview项?   java如何在Hibernate中使用@Qualifier   我想计算特定文本webdriver java在多个页面上可用的HTML表中的数据   java捕获Spring MVC REST服务抛出的Jersey REST客户端的异常   java Hibernate flush()影响事务   密钥绑定Java密钥绑定   sonarqube java,sonar,圈复杂度   使用3DES在Java中加密,在SQL Oracle中解密   regex正则表达式在regex101上工作。com,但不是prod   JAVAsql。SQLException:ORA00600:内部错误代码,参数:[12811],[93233]   java H2数据库存储在哪里?   java如何避免在使用Jackson时从JSON字符串反序列化空JSON数组元素