勿忘,须舍

  • 首页

  • 标签

  • 分类

  • 归档

  • python 随记

  • 关于

  • 搜索

Excel中xlwings库使用

发表于 2022-11-20 分类于 python

install

1
2
pip install xlwings
xlwings addin install

update

1
pip install --upgrade xlwings

Uninstall

1
2
xlwings addin remove
pip uninstall xlwings

文档:https://docs.xlwings.org/en/stable/installation.html

阅读全文 »

window docker安装

发表于 2021-08-08 分类于 docker

安装前准备

下载地址

https://docs.docker.com/docker-for-windows/install/

参考链接

适用于 Linux 的 Windows 子系统安装指南 (Windows 10)
windows docker 更改镜像安装目录

Windows上更改Docker的默认安装路径

用管理员身份打开cmd窗口,然后运行命令:mklink /j “C:\Program Files\Docker” “D:\Program Files\Docker”,在此之前要先创建”D:\Program Files\Docker”目录。最后安装docker就可以了。

Windows上更改Docker镜像位置

用管理员身份打开cmd窗口,然后运行命令:mklink /j “C:\Users\Administrator\AppData\Local\Docker” “D:\Users\Administrator\AppData\Local\Docker”,在此之前要先创建”D:\Users\Administrator\AppData\Local\Docker”目录。

解决broker挂掉时celery卡死的问题

发表于 2021-03-23 分类于 celery

在一个项目中用到了celery,我们用rabbitmq来作为broker,但是发现当rabbitmq挂掉时,celery却无法发送任务,设计到apply_async和delay的代码会一直处在卡住的状态。

也尝试使用celery文档中的BROKER_CONNECTION_TIMEOUT参数,但不起效果,其实官方也说了:

1
The broker connection timeout only applies to a worker attempting to connect to the broker. It does not apply to producer sending a task, see broker_transport_options for how to provide a timeout for that situation.

这个参数仅对worker有用,对任务发送是无用的。很傲娇的是broker_transport_options这个链接中也未提供足够的帮助信息。

继续查找相关信息,在几个项目的issue页面看到些讨论,还是需要对broker_transport_options这个配置传入参数才行,例如:

1
BROKER_TRANSPORT_OPTIONS = {"max_retries": 3, "interval_start": 0, "interval_step": 0.2, "interval_max": 0.5}

这段配置意思为:

最多重试3次
从0秒开始重试
每次失败后等待0.2秒后再次进行尝试
总尝试时间不超过0.5秒

在项目中使用这个配置后发现确实解决了问题,代码在遇到rabbitmq挂掉的情况下不会再卡住了(因为都是用了kombu,估计对redis作为broker也有效果吧)。

github上的讨论的issue可见:https://github.com/celery/celery/issues/4627#issuecomment-396907957

使用示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# settings.py

CELERY_BROKER_TRANSPORT_OPTIONS = {
"max_retries": 5,
"interval_start": 0,
"interval_step": 1,
"interval_max": 5
}

# celery file

from celery import Celery
from celery import platforms
from django.conf import settings

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'smartant_backend.settings')

app = Celery('smartant_backend')
platforms.C_FORCE_ROOT = True

app.config_from_object('django.conf:settings', namespace='CELERY')

TCP三次握手、四次挥手过程及原理

发表于 2021-03-22 分类于 tcp

TCP 协议简述

TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。
无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。
同时由于TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议,TCP是全双工模式,所以需要四次挥手关闭连接。

阅读全文 »

mysql explain使用

发表于 2021-03-22 分类于 mysql

explain模拟优化器执行SQL语句,在5.6以及以后的版本中,除过select,其他比如insert,update和delete均可以使用explain查看执行计划,从而知道mysql是如何处理sql语句,分析查询语句或者表结构的性能瓶颈。作用:

  • 表的读取顺序
  • 数据读取操作的操作类型
  • 哪些索引可以使用
  • 哪些索引被实际使用
  • 表之间的引用
  • 每张表有多少行被优化器查询
阅读全文 »

golang常用库:字段参数验证库-validator使用

发表于 2021-03-06 分类于 go

背景

在平常开发中,特别是在web应用开发中,为了验证输入字段的合法性,都会做一些验证操作。比如对用户提交的表单字段进行验证,或者对请求的API接口字段进行验证,验证字段的合法性,保证输入字段值的安全,防止用户的恶意请求。

一般的做法是用正则表达式,一个字段一个字段的进行验证。一个一个字段验证的话,写起来比较繁琐。那有没更好的方法,进行字段的合法性验证?有, 这就是下面要介绍的 validator 这个验证组件。

代码地址:
https://github.com/go-playground/validator

文档地址:
https://github.com/go-playground/validator/blob/master/README.md

阅读全文 »

golang beego使用记录

发表于 2021-03-05 分类于 go , beego

beego 简介

beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。

阅读全文 »

golang uuid使用

发表于 2021-02-28 分类于 go , package , uuid

uuid是Universally Unique Identifier的缩写,即通用唯一识别码。

uuid的目的是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 uuid。
A universally unique identifier (UUID) is a 128-bit number used to identify information in computer systems。

阅读全文 »

golang logrus日志处理

发表于 2021-02-26 分类于 go , logrus

logrus介绍

Logrus是Go(golang)的结构化logger,与标准库logger完全API兼容。它有以下特点:

  • 完全兼容标准日志库,拥有七种日志级别:Trace, Debug, Info, Warning, Error, Fatal 和 Panic。

  • 可扩展的Hook机制,允许使用者通过Hook的方式将日志分发到任意地方,如本地文件系统,logstash,elasticsearch或者mq等,或者通过Hook定义日志内容和格式等

  • 可选的日志输出格式,内置了两种日志格式JSONFormater和TextFormatter,还可以自定义日志格式

  • Field机制,通过Filed机制进行结构化的日志记录

  • 线程安全

阅读全文 »

golang 杂记

发表于 2021-02-26 分类于 go

用于记录golang开发中的常见示例。

阅读全文 »
12…16
Mr Wang

Mr Wang

行动了才会有故事,说出来才会有结果。
154 日志
59 分类
43 标签
RSS
GitHub E-Mail Weibo
© 2022 Mr Wang
总访问量次 | 总访客数人