install
1 | pip install xlwings |
update
1 | pip install --upgrade xlwings |
Uninstall
1 | xlwings addin remove |
1 | pip install xlwings |
1 | pip install --upgrade xlwings |
1 | xlwings addin remove |
https://docs.docker.com/docker-for-windows/install/
适用于 Linux 的 Windows 子系统安装指南 (Windows 10)
windows docker 更改镜像安装目录
用管理员身份打开cmd窗口,然后运行命令:mklink /j “C:\Program Files\Docker” “D:\Program Files\Docker”,在此之前要先创建”D:\Program Files\Docker”目录。最后安装docker就可以了。
用管理员身份打开cmd窗口,然后运行命令:mklink /j “C:\Users\Administrator\AppData\Local\Docker” “D:\Users\Administrator\AppData\Local\Docker”,在此之前要先创建”D:\Users\Administrator\AppData\Local\Docker”目录。
在一个项目中用到了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 | # settings.py |
TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。
无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。
同时由于TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议,TCP是全双工模式,所以需要四次挥手关闭连接。
explain模拟优化器执行SQL语句,在5.6以及以后的版本中,除过select,其他比如insert,update和delete均可以使用explain查看执行计划,从而知道mysql是如何处理sql语句,分析查询语句或者表结构的性能瓶颈。作用:
在平常开发中,特别是在web应用开发中,为了验证输入字段的合法性,都会做一些验证操作。比如对用户提交的表单字段进行验证,或者对请求的API接口字段进行验证,验证字段的合法性,保证输入字段值的安全,防止用户的恶意请求。
一般的做法是用正则表达式,一个字段一个字段的进行验证。一个一个字段验证的话,写起来比较繁琐。那有没更好的方法,进行字段的合法性验证?有, 这就是下面要介绍的 validator 这个验证组件。
代码地址:
https://github.com/go-playground/validator
文档地址:
https://github.com/go-playground/validator/blob/master/README.md
beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。
uuid是Universally Unique Identifier的缩写,即通用唯一识别码。
uuid的目的是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 uuid。
A universally unique identifier (UUID) is a 128-bit number used to identify information in computer systems。
Logrus是Go(golang)的结构化logger,与标准库logger完全API兼容。它有以下特点:
完全兼容标准日志库,拥有七种日志级别:Trace
, Debug
, Info
, Warning
, Error
, Fatal
和 Panic
。
可扩展的Hook机制,允许使用者通过Hook的方式将日志分发到任意地方,如本地文件系统,logstash,elasticsearch或者mq等,或者通过Hook定义日志内容和格式等
可选的日志输出格式,内置了两种日志格式JSONFormater和TextFormatter,还可以自定义日志格式
Field机制,通过Filed机制进行结构化的日志记录
线程安全