自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 Haproxy动态分发到后端服务器

在实际的使用过程遇到这样一个需求,由于测试环境比较多,每个测试环境都是独立运行的,但是又只有一个域名来进行访问。这样在haproxy进行转发的时候就需要前端发送一个特定的头部信息来对响应的请求转发到相应的后端服务器。这样设计的话就需要设置一个map文件来记录响应的头部对应的后端服务器地址。其他的配置文件就不再给出,只给出响应的配置:map文件serverip.map信息:dev1 192.168.11.10dev2 192.168.11.11haproxy配置信息:...frontend

2020-10-14 12:02:18 1010 1

原创 Haproxy Cache

HAproxy提供了一个缓存机制。这个缓存是基于进程与线程共享的内存,这个内存被分为每块大小1k的块。如果块不再使用,它能够被删除来存储新的对象。这个cache使用host头和rui的hash值作为key当一个对象从缓存中得到传送地址,在日志中server name将会使用”“限制:在以下情况缓存中不会存储对象:1、返回值不是2002、返回头中包含Vary3、Content-Length+ header size >“max-object-size”4、返回不可缓存5、不使用GE

2020-07-20 13:58:58 1019

转载 lua学习笔记

lua 八种基本类型数值(number) 内部以double表示字符串(string) 总是以0结尾,但可以包含任意字符,布尔(boolean) 只有true和false,只有false和nil 代表失败函数(function) lua关键概念,并不简单等同于其他语言的函数,表(table) 异构的hash表,关键概念userdata 用户定义的c数据结构,脚本用户只能使用,不能定义线程(thread) lua协作线程(conr

2020-07-02 16:40:38 230

翻译 HAProxy2.1 LUA API

一、HAProxy Lua运行上下文lua 代码在haproxy中以两种模式执行,第一种是initialisation mode 第二种是runtime mode1、在initialisation mode 中,可以执行dns解析,但是不能执行socket i/o,在这个模式中当lua脚本执行时haproxy将会blocked2、在runtime mode中,不能执行dns解析,但是可以使用socket,执行lua脚本是和请求线程一致。lua 代码可以在一个或者多个文件中导入,这些文件包括主要的代码

2020-06-29 21:16:29 1729

转载 HAProxy 日志管理

一、rsyslog服务在理解haproxy的log设置原理之前,先来了解一下linux中的系统日志服务,系统日志服务和其他服务一样,也有启动,停止,配置等。配置文件:/etc/rsyslog.conf配置目录:/etc/rsyslog.d/也是在rsyslog.conf中include下rsyslog.d下的所有文件启动,重启,停止命令:systemctl start rsyslogsystemctl stop rsyslogsystemctl restart rsyslog命令log

2020-06-15 15:47:00 420

转载 HAProxy中与ssl相关的配置项

与ssl相关的众多配置项出现在不同的模块,语法中,主要包括global,bind,server等一、globalca-base {dir}crt-base {dir}ssl-default-bind-ciphers {ciphers}ssl-default-bind-options [{option}]…ssl-default-server-ciphers {ciphers}ssl-default-server-options [{option}]…ssl-sh-param-file {fi

2020-06-15 10:31:26 1601

转载 Haproxy中的acl的详解

haproxy 能够从请求报文,响应报文,从客户端或者服务器端,从表,环境信息等中提取数据,提取这样的数据的动作我们称之为获取样本,进行检索时,这些样本可以用来实现各种目的,比如作为粘滞表的键,最常用的用途是,根据预定义的模式来进行匹配。访问控制列表(ACL)提供一个灵活方案进行内容切换,或者从请求,响应,任何环境状态中提取的数据基础之上做出决策,控制列表的原则很简单:从数据流,表,环境中提取数据样本对提取的样本可选的应用格式转换对一个样本应用一个或多个模式匹配当模式匹配样本时才执行动作执行的动

2020-06-15 10:24:56 3424

转载 haproxy中的Proxies段的配置

在Haproxy中的代理的配置包括4个模块,defaults、listen、frontend、backend。defaults:用于为所有其它配置段提供默认参数,listen、frontend、backend将使用defaults中的设置,如果想通的参数被重复设置,那么listen、frontend、backend的优先级高于defaults.frontend:监听客户端的链接。backend:代理的后端服务器。listen:包括监听客户端和代理的后端服务器,是一个完整的代理的模块,通常使用在tcp

2020-06-12 17:28:11 1659

转载 HAProxy 配置文件 -global

二、HAProxy 配置文件haproxy配置参数的来源:通过命令行参数(具有最高优先级,会覆盖配置文件中的配置)通过global section 用于设置进程级别的参数proxy section 可以通过:defaults,listen,frontend,backend配置文件的语法:每行以一个关键字开始,后接一个或多个参数,参数与参数之间以空格分割,注释行以#开头。1、global用于设定全局参数,属于进程级别的配置,通常与操作系统配置有关常见配置:log:全局日志配置。eg

2020-06-12 16:36:42 744

原创 Haproxy (安装)

centos 7 安装最新稳定版haproxy:一、安装1、系统准备:由于haproxy中设计到ssl,所以在Linux中需要安装:yum install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel systemd-devel.x86_642、haproxy 地址:https://github.com/haproxy/haproxy下载v2.1.0版本:wget https://github.com/ha

2020-06-12 14:54:05 183

原创 FastAPI 请求上下文及应用上下文

在fastapi的实际应用中发现,fastapi没有提供像flask中的g这样的上下文相关的东西。所以在查找了多方的资料发现,可以使用中间件,再加上Python3.7中的新特性contextvar可以实现应用上下文的管理。contextvar可自行到官网进行学习。这里着重讲解一下fastapi中怎么应用。fastapi中的中间件,可实现对每次请求的request对象进行操作,然后执行请求内容,最后也可以对返回response进行处理。middleware用法参考我之前的文章。fastapi基于sta

2020-05-25 19:04:14 3586 2

原创 python 特殊方法

字符串、字节序列表示形式 : __repr__,__str__,__format__,__bytes__数值转换:__abs__,__bool__,__complex__,__int__,__float__,__hash__,__index__集合模拟:__len__,__getitem__,__setitem__,__delitem__,__contains__迭代枚举:__iter__,__reversed__,__next__可调用模拟:__call__上下文管理:__ent

2020-05-21 16:52:02 165

原创 Python 装饰器应用

一、创建装饰器时保留函数元信息当装饰器作用在某个函数上时,这个函数的重要元信息:名字,文档,注解和参数签名都会丢失。可以使用functools库中的@wraps装饰器来注解底层包装函数。eg:import timefrom functools import wrapsdef timethis(func): @wraps(func) def wrapper(*args,**kwargs): start=time.time() result=func(*args,**kwargs)

2020-05-20 16:24:11 198

翻译 fastapi(二十三)-高级用户指南

路径操作高级配置OpenAPI的operationId您可以使用operationId参数设置在路径操作中使用的OpenAPI operation_id。from fastapi import FastAPIapp = FastAPI()@app.get("/items/", operation_id="some_specific_id_you_define")async def...

2020-03-24 13:40:01 2661

翻译 fastapi(二十二)-应用配置

您可以在FastAPI应用程序中配置几件事。标题,描述和版本您可以设置:标题:在OpenAPI和自动API文档用户界面中,用作API的标题/名称。Description:OpenAPI和自动API文档UI中对API的描述。版本:API的版本,例如v2或2.5.0。例如,如果您具有应用程序的先前版本(也使用OpenAPI),则很有用。from fastapi import F...

2020-03-24 11:42:13 2130

翻译 fastapi(二十一)-后台任务

可以在返回response后运行后台任务。这对于在请求之后需要进行的操作很有用,但是客户端实际上并不需要在收到响应之前就等待操作完成。例如,这包括:执行操作后发送的电子邮件通知:由于连接到电子邮件服务器并发送电子邮件的过程通常很慢(几秒钟),因此您可以立即返回响应并在后台发送电子邮件通知。处理数据:例如,假设您收到的文件必须经过缓慢的处理,您可以返回“已接受”(HTTP 20...

2020-03-24 11:38:49 6156

翻译 fastapi(二十)-大型项目文件结构

如果需要构建应用程序或api,很少将所有的内容都放入一个文件中。fastapi提供了一个方便的工具可灵活的构建应用。(类似于flask的蓝图)假如文件结构如下:.├── app│ ├── init.py│ ├── main.py│ └── routers│ ├── init.py│ ├── items.py│ └── users....

2020-03-24 11:29:16 10564 1

翻译 fastapi(十九)-中间件

你可以添加中间件到你的fastapi应用程序中“中间件”是一种函数,该函数可在每个请求由任何特定路径操作处理之前与每个请求一起使用。以及返回之前的每个响应。它从你的应用程序中接收每个请求然后,它可以对该请求执行某些操作或运行任何所需的代码。然后,它传递要由应用程序其余部分处理的请求(通过某些路径操作)。然后,它将获取应用程序生成的响应(通过某些路径操作)它可以对响应做出响应或运行任何...

2020-03-24 11:03:21 3673

翻译 fastapi(十八)-jwt token

为了让我们的系统更加的安全,我们需要使用jwt token和真正的password hashing关于JWTjwt意思是“json web token”看起来是这个样子的:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyf...

2020-03-24 10:31:53 4072

翻译 fastapi(十七)-安全

安全介绍有许多方式去处理安全性,身份认证和授权。并且它通常是一个复杂而又困难的话题。fastapi提供一些工具去更容易的处理安全问题。先来了解一些小的概念1、OAuth2OAuth2是一个规范,定义了几种处理身份验证和授权的方式。它是一个相当广泛的规范,涵盖了几个复杂的用例。它包括使用“第三方”进行身份验证的方法。这就是所有带有“使用Facebook,Google,Twitter...

2020-03-23 16:41:01 3971

翻译 fastapi(十六)-依赖关系

fastapi是一个非常强大而又直观的依赖注入系统它被设计得使用起来非常简单,同时让开发人员可以轻松得将其他组件与fastapi集成在一起。什么时依赖注入依赖注入意味着在编码得时候,在你得代码中会留一条通道给你去声明需要用到依赖,(即:要想你得代码成功运行必须得先成功运行依赖函数。有点类似于装饰器)在你做以下操作得时候将会非常有用:使用共享逻辑(一遍又一遍得使用相同得代码)共享数据连...

2020-03-23 11:19:40 2838

翻译 fastapi(十五)-Body update

使用PUT更新替换HTTP PUT操作可用于更新,你可以使用jsonable_encoder来转换输入的数据为可以使用json存储的数据。(eg:NoSQL Database)from typing import Listfrom fastapi import FastAPIfrom fastapi.encoders import jsonable_encoderfrom pyda...

2020-03-22 16:51:08 522

翻译 fastapi(十四)-路径操作配置-json兼容编码

在路径操作装饰器上可以传入几个参数。响应状态码在路径操作中可以定义status_code用于响应中,你可以直接传入整数code,如果不记得每个数字代表什么,可以在状态中加入简短得描述。eg:from typing import Setfrom fastapi import FastAPI, statusfrom pydantic import BaseModelapp = Fa...

2020-03-22 16:32:11 1918 2

翻译 fastapi(十三)-错误处理

在许多情况下你的api都需要向用户告知错误信息,like:1、客户端没有操作权限2、不能访问资源3、资源不存在等当向客户端响应错误信息的时候可以使用HTTPExceptionHTTPExceptioneg:from fastapi import FastAPI, HTTPExceptionapp = FastAPI()items = {"foo": "The Foo Wre...

2020-03-20 11:50:31 6437

翻译 fastapi(十二)-表单数据和文件上传

当你需要接收表单字段而不是json时可以使用Form为了使用form需要先安装python-multipartpip install python-ultiparteg:from fastapi import FastAPI, Formapp = FastAPI()@app.post("/login/")async def login(*, username: str = Fo...

2020-03-20 10:40:14 6725 2

翻译 fastapi(十一)-响应状态码

同样你也可以在以下路径操作中使用status_code参数来声明Http的status [email protected]()@app.post()@app.put()@app.delete()eg:from fastapi import FastAPIapp = FastAPI()@app.post("/items/", status_code=201)async def cr...

2020-03-20 09:56:40 873

翻译 fastapi(十)-响应模式

你可以在一下方法中设置相应的response_model参数:@app.get()@app.post()@app.put()@app.delete()eg: from typing import Listfrom fastapi import FastAPIfrom pydantic import BaseModelapp = FastAPI()class Item...

2020-03-20 09:39:28 1635

翻译 fastapi(九)-头部参数

头部参数和Query,Path和Cookie一样。eg:from fastapi import FastAPI, Headerapp = FastAPI()@app.get("/items/")async def read_items(*, user_agent: str = Header(None)): return {"User-Agent": user_agent}...

2020-03-19 17:31:29 1868

翻译 fastapi(八)额外的数据类型-Cookie

到目前为止,常见的数据类型有:intfloatstrbool但是你也可以使用更复杂的数据类型其他数据类型UUID:一个标准的“universally unique identifier” ,可以在很多的数据库和系统中作为id值datetime.datetimepython中的datetime.datetime。在请求和返回中将会作为str使用ISO 8601格式: 2008-...

2020-03-19 17:21:26 622

翻译 fastapi(七)Body

我们已经提到过Path以及Query,下面来看看更好的对于请求正文的声明body-多个参数混合Path,Query和请求正文参数eg:from fastapi import FastAPI, Pathfrom pydantic import BaseModelapp = FastAPI()class Item(BaseModel): name: str desc...

2020-03-19 16:43:40 2402

翻译 fastapi(六)路径参数和数值验证

你可以像在Query中定义的数据验证和metadata一样,在Path中使用。eg:from fastapi import FastAPI, Path, Queryapp = FastAPI()@app.get("/items/{item_id}")async def read_items( item_id: int = Path(..., title="The ID of...

2020-03-19 15:07:47 1007

翻译 fastapi(五)查询参数字符串认证

fastapi 允许为你的参数添加附加的信息和验证eg:from fastapi import FastAPIapp = FastAPI()@app.get("/items/")async def read_items(q: str = None): results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}...

2020-03-19 14:37:39 939

翻译 fastapi(四)请求正文

当你需要从client发送数据到你的api的时候,需要将其作为请求正文发送。request是客户端发送数据到api,response是api发送数据到客户端。你的api总是需要发送response body 但是客户端并不是必须发送request body为了声明请求正文,可以使用pydantic 模块注意:发送请求正文,不能使用GET方法,只能使用POST、PUT、DELETE或者PA...

2020-03-19 14:02:43 1926

翻译 fastapi(三)查询参数

当你声明函数参数的时候,如果参数并不是来自路径参数中,那么将被自动视为查询参数。from fastapi import FastAPIapp = FastAPI()fake_items_db = [{"item_name": "Foo"}, {"item_name": "Bar"}, {"item_name": "Baz"}]@app.get("/items/")async de...

2020-03-19 11:24:39 1943

翻译 fastapi(二)路径参数

路径参数你可以声明一个路径参数或者变量,使用python格式的字符串。@app.get("/items/{item_id}")async def read_item(item_id):...这个路径参数item_id的值将会传入函数中的变量item_id 中使用类型的路径参数你可以在函数中声明路径参数的类型,使用python类型注释。...async def read_item...

2020-03-19 11:08:54 1694

翻译 Fastapi(一)

用户指南这个用户指南将指导你怎样去使用fastapi,运行代码所有的代码都能够直接复制并运行,为了运行这些实例,直接拷贝代码到main.py文件中,然后使用uvicorn运行:uvicorn main:app -reload安装fastapi安装fastapi第一步你也许想要安装它的所有依赖项目:pip install fastapi[all]它也会安装uvicorn,注意:...

2020-03-19 10:31:50 3211 1

原创 mysql数据库自动填充数据,性能测试

import stringimport argparseimport randomimport threadingimport timefrom contextlib import contextmanagerimport pymysqlDB_NAME=‘test_insert_data_db’TABLE_NAME=‘test_insert_data_table’CREATE_T...

2019-08-06 17:25:01 654

原创 判断IP是否可达,threading,queue,subprocess

#encoding:utf-8import subprocessimport threadingfrom queue import Queuefrom queue import Emptydef call_ping(ip):if subprocess.call([“ping”,’-c’,‘1’,ip]):print("{0} is alive".format(ip))else:p...

2019-08-06 10:57:36 150

原创 python 遍历文件系统,查找符合条件的文件,带过滤功能

#encoding:utf-8import osimport fnmatchclass find_file():def is_file_match(self,filename,patterns):for pattern in patterns:if fnmatch.fnmatch(filename,pattern):return Truereturn Falsedef find_...

2019-08-05 16:40:57 928

cisco 考题

cisco专业考题,有关网络配置,计算机网络,的相关题目,全英文版

2012-03-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除