自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 prometheus基于consul的服务发现

consul在微服务中用于服务注册与发现的,在prometheus中也可以用于被监控对象的自动发现,这样就实现了在不修改prometheus配置文件、不重启的情况下,自动发现exporter并将其加入到监控范围。

2024-09-08 17:19:17 683

原创 prometheus基于文件的服务发现

但这个缺点是,每次修改完后都得重启prometheus。有没有什么办法,能在不重启的情况下增加target呢?有,那就是prometheus的服务自动发现。之间讲到,prometheus监控的对象就来自于他的配置文件里面的targets,如果要新增被监控对象,就继续往targets里面加。今天咱们讲一个最常用的方式,基于文件的服务发现(File-Based-Service-Discovery)新增target时,可以增加文件,也可以直接修改文件内容,prometheus都能识别到。

2024-09-01 23:33:52 544

原创 Prometheus+Grafana监控数据可视化

上一篇文章讲了prometheus的简单使用,这一篇就先跳过中间略显枯燥的内容,来到监控数据可视化。一方面,可视化的界面看着更带劲,另一方面,也更方便我们直观的查看监控数据,方便后面的学习。

2024-08-30 23:07:22 804

原创 prometheus入门(简单使用)

先上一张官网的架构图:Prometheus的构成:方式1:去官网下载二进制安装包方式2:使用docker快速体验 我这里选择方式2启动dockr容器后,浏览器访问 ip:9090 就能看到Prometheus server的网页:点 Status>Targets 就能看到我们监控的目标:这个监控目标来自哪儿呢?咱们进容器看下他的配置文件(把这个默认配置文件复制出来,待会儿有用)::是不是就和网页上的target对上了?exporter就是运行在你要监控的目标上,收集监控目标的数据,提供给P

2024-08-25 22:50:21 924

原创 shell脚本检查端口是否被占用,服务是否安装、启动

【代码】shell脚本检查端口是否被占用,服务是否安装、启动。

2024-03-28 19:50:15 389

原创 SQLAlchemy修改postgres表的jsonb字段失效

今天遇到一灵异事件,ORM更新操作,一字段始终不生效,最后发现问题原因是postgres的jsonb导致的。

2024-03-27 22:38:52 360

原创 Python进程池回调

进城池回调

2024-03-24 21:59:25 223

原创 easyocr和paddleocr的简单使用与对比

这次有个OCR的需求,对比了一下和的识别效果,最终选择了paddleocr。这里记录一下使用过程和遇到的问题。

2024-03-14 23:30:43 2321

原创 Windows本地代理,IP端口转发

比如我访问 127.0.0.1:8500时,把请求转发到192.168.1.3:8500。需求:本机访问 ip1:port1时,把它转到 ip2:port2。以管理员身份运行命令行窗口。

2023-12-03 16:23:15 580

原创 flask参数校验自定义返回

【代码】flask参数校验。

2023-11-04 15:55:16 546

原创 python 生成图形验证码的库captcha

【代码】python 生成图形验证码的库captcha。

2023-11-04 10:08:53 343

原创 Python partial的作用

partial 的科普 见这位大神的文章,写的很好:https://zhuanlan.zhihu.com/p/47124891。,此时问题来了,前2个参数signo, frame,是系统传的,我们要如何把自己的service_id传进去呢?这时 就需要用到partial了。一个例子:监听服务退出信号。

2023-08-27 22:21:31 256

原创 非常方便的在线crontab表达式工具

网址:https://crontab.guru/

2023-08-22 23:32:10 365

原创 flask接口请求频率限制

return jsonify({'code': 403, 'msg': '请稍后再试!'})# 全局错误处理# 单独错误处理比如 有时候,希望登录失败的,才进行计数,登录失败超过20次就禁止访问,而登录成功的,不计数,随便请求 无限制# 上面的例子是:返回的JSON中code==400 就做一次计数,否则就不计数(这次请求,不计入限制)# 还可以有其他的计数逻辑,比如= 200更多操作见官网。

2023-08-16 21:11:31 1628 1

原创 kubevirt pod 报错 N node(s) had volume node affinity conflict

猜测是 hostpath-csi StorageClass 无法预知pod将被调度到哪个node上,必须等pod调度到node后才能做PV-PVC的绑定,所以它的 volumeBindingMode 必须是 WaitForFirstConsumer。我把 hostpath-csi StorageClass 的 volumeBindingMode 改成了 Immediate 就发生了这个错误,改回 WaitForFirstConsumer 就解决了。我这里所写的,可能只是其中一个可能的原因。

2023-08-10 10:50:19 481

原创 Python faker 生成测试数据

方法一。

2023-08-05 13:11:30 1169

原创 docker与宿主机时间同步

docker run的时候指定参数。

2023-07-22 19:31:26 143

原创 编译安装cri-dockerd

编译cri-dockerd时,按照官方文档操作 安装golang时timeout

2022-09-14 17:25:23 2037 1

原创 元素周期表的118个化学元素

在网上没找到能复制拿来用的,去百度爬了个,整理下 方便后来人:['H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr', 'Rb', 'Sr', 'Y',

2022-04-25 17:30:57 991 2

原创 使用docker体验elasticsearch

注意事项:官方文档提示至少要为docker分配4G的内存,否则可能会启动失败。我亲测确实是这样,elasticsearch+kibana 占用了3.3G内存。你可能会遇到这个错误:bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]。这时需要到(宿主机) /etc/sysctl.conf 中增加一行:v

2022-04-11 09:05:15 250

原创 APScheduler定时任务不执行?

       不知你有没有遇到APScheduler定时任务部分未执行的情况,我反正是遇到了,任务随机性的不执行,一看官网文档,才知道是自己的使用方法不对。       当前网上的大多数文章都只说了基本的使用方法,没说注意事项。我在这里整理一下:1. Executor 是默认大小为10的ThreadPoolExecutor。原文:from apscheduler.schedulers.background import

2021-12-18 23:10:59 6687 6

原创 MySQL分区表-按月份归类

MySQL单表数据量,建议不要超过2000W行,否则会对性能有较大影响。最近接手了一个项目,单表数据超7000W行,一条简单的查询语句等了50多分钟都没出结果,实在是难受,最终,我们决定用分区表。建表一般的表(innodb)创建后只有一个 idb 文件:create table normal_table(id int primary key, no int)查看数据库文件:normal_table.ibd 创建按月份分区的分区表,注意!除了常规主键外,月份字段(用来分区的字段)也必须是主键

2021-08-25 22:59:58 590 1

原创 nginx负载均衡-提升服务的并发能力

我使用的框架是python的fastAPI,一个简单的hello world,加一个sleep(2)模拟耗时操作。代码如下:import timeimport uvicornfrom fastapi import FastAPIapp = FastAPI()@app.get("/")def read_root(): time.sleep(2) # 模拟耗时操作 return {"Hello": "World"}先单进程启动启动命令:uvicorn --host 0.

2021-08-14 21:59:13 611

原创 fastapi使用websocket的简单示例

前端页面:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>websocket</title></head><body><h1>WebSocket Chat</h1><input type="text" id="nickname" autocomplete="off"

2021-08-01 12:09:38 1534 1

原创 fastAPI使用mongoDB

我用的是mongoengine先 pip install mongoengine编写ORM模型:from mongoengine import Document, IntField, StringField, ListField, EmbeddedDocument, EmbeddedDocumentField, FloatFieldclass Course(EmbeddedDocument): subject = StringField(required=True) score =

2021-07-31 17:20:37 2166

原创 FASTapi sqlalchemy 的一些写法

joindb.query(YourModelA).join(YourModelA)...and、orfrom sqlalchemy import and_, or_db.query(YourModel).filter(and_(condition1,condition1...))...offset、limitdb.query(YourModel).filter(...).offset(1).limit(1).all()is null 、is not nulldb.qu.

2021-07-31 16:15:39 751

原创 fastapi.exceptions.RequestValidationError: 1 validation error for Request

框架用的fastAPI 报错如标题我有两个路由:@router.get("/{id}") pass@router.get("/others") pass结果访问 /others报错:fastapi.exceptions.RequestValidationError: 1 validation error for Requestpath -> id value is not a valid integer (type=type_error.integer)官网对此的解释 ,

2021-07-21 10:20:49 3322

原创 python sorted 对对象排序

方法一:class Myobj: def __init__(self,id,score): self.id=id self.score=scoreif __name__ == '__main__': array=[Myobj(1,5),Myobj(2,2),Myobj(3,0)] array=sorted(array,key=lambda Myobj:Myobj.score) for obj in array: print

2021-06-15 14:52:13 340

原创 unable to prepare context: path “.\r“ not found

执行sh 脚本的时候,报标题错误原因是 脚本是在Windows上编辑,然后上传到Linux上执行。好像是2个系统编码不一样导致的vim 打开脚本 进入命令行 输入 set ff=unix 再保存退出即可

2021-05-21 09:18:46 3920

原创 python ipaddress.ip_network 报错ValueError: IP/x has host bits set

from ipaddress import ip_networkif __name__ == '__main__': network=ip_network('127.0.0.1/8') # 随便一个示例 print(network)在使用ip_network的时候报错 ValueError: 127.0.0.1/8 has host bits set 刚开始没搞明白原因,后来仔细检查了下,像上面 ‘127.0.0.1/8’ 后面24位(32-8)必须全是0才行。‘127.0.0.0

2021-05-18 16:59:21 6244 2

原创 VMware中安装Linux后,ifconfig只有127.0.0.1,SSH终端无法连接

确保 此电脑-右键-管理-服务 里面VMware各项服务都在运行vim /etc/sysconfig/network-scripts/ifcfg-ens33如果最后一行是 ONBOOT=no 把它改成 yes然后 service network restart

2021-05-11 10:43:01 327

原创 裂开!supervisor将我的python版本变成了3.6.8?

今天踩了一个supervisor的坑,我的python版本明明是3.7.8 :python -V Python 3.7.8安装一会儿软件过后,直接提示不认识:python -V bash: /usr/bin/python: No such file or directory而使用python3 -V 却能显示:python3 -V Python 3.6.8我蒙懵逼了,软链接明明用的是python 这里python却不认识。明明安装的是python3.7.8 ,这里却变成了3.6.

2021-04-16 17:02:17 610

原创 centOS下python用ffmpeg将MP3转换成WAV

最近有个任务,把服务器上的mp3转换成wav格式。查了一下 可以这么用:# 先PIP install pydubimport osfrom pydub import AudioSegmentCURRENT_DIR = os.path.dirname(os.path.abspath(__file__))def mp3_to_wav(mp3_path, wav_path): song = AudioSegment.from_mp3(mp3_path) song.export(wa

2021-03-25 14:21:20 312

原创 wget unable to resolve host address

刚安装的虚拟机,wget的时候报错。ping www.baidu.com的时候也报错 name or service not known在 /etc/resolv.conf 后面追加两行:nameserver 8.8.8.8 #google域名服务器nameserver 8.8.4.4 #google域名服务器再ping 还是不行service network restart 后就好了,wget 也好了...

2021-01-12 23:36:49 447

原创 python操作redis zset

前文写了redis的第五种数据结构zset,这篇文章照例用python实现一下。(其它几种数据结构,python客户端和redis客户端的语法还比较一致的,但是zset的一些差别是真的有点大,强烈建议结合前文redis客户端一起阅读)from redis import Redisif __name__ == '__main__': client = Redis(host='192.168.174.129', port=6666, decode_responses=True) try:

2020-12-28 14:08:57 2218

原创 redis的第5种数据结构——zset

前面几篇文章写了redis的4种数据结构——string / hash / list / set, 今天介绍下最后一种数据结构 zset。zset 和 set 的不同之处是,zset多了一个scorezset的命令都是以Z开头1.添加/更新 zadd key [nx|xx] [ch] [incr] score member …默认情况下的返回值:成功添加的新成员的数量> zadd z1 77 tom 90 mike 60 michael(integer) 3如果有序集合中已经存在s

2020-12-27 00:04:41 535

原创 python操作redis set

上一篇文章写了redis的第四种数据结构——set ,这篇文章用python客户端来复现一下。(建议结合上篇文章看,效果更佳)from redis import Redisif __name__ == '__main__': client = Redis(host='x.x.x.x', port=6666, decode_responses=True) try: # 添加元素 print(client.sadd('s1', 1, 2, 3)) # 3

2020-12-26 16:38:02 1664

原创 redis的第四种数据结构——set

前面几篇文章讲了redis的string / hash / list,今天写一下set。redis的集合和数学上的集合是一样的,set命令都以S开头1.添加元素到集合 sadd key member…> sadd s1 1 2 3(integer) 3> sadd s1 3(integer) 0> sadd s1 2 3 4 5(integer) 22.查看集合中的元素 smembers key> smembers s11) "1"2) "2"3) "3"

2020-12-26 15:15:37 219

原创 python操作redis list

上一篇文章写了redis客户端的各种list操作,这篇文章用python客户端来复现一下。(建议结合上篇文章看,效果更佳)from redis import Redisif __name__ == '__main__': client = Redis(host='192.168.174.129', port=6666, decode_responses=True) try: # 左右插入 print(client.rpush('list1', 1, 'a

2020-12-20 13:10:56 290 1

原创 redis的第三种数据结构 list

前几篇文章介绍了redis的string和hash,今天讲一下list。list的命令基本都以L开头1.从右边插入列表 rpush key value1 value2 …> rpush list1 1 a 2(integer) 32.从左边插入列表 lpush key value1 value2 …> lpush list1 0 -1(integer) 53. 查看列表 lrange key start stop> lrange list1 0 -11) "-1"

2020-12-19 20:55:14 220 1

空空如也

空空如也

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

TA关注的人

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