Go Hot Upgrade via Nginx Proxy
Achieve zero-downtime upgrade by switching backend port in nginx and reloading.
go利用nginx实现热重载热更新平滑重启 golang不停服更新 go热升级
平滑重启(热重启)是指WebServer在重启的时候不会中断已有请求的执行/该特性在不同的项目版本发布的时候特别有用,例如,当需要先后发布两个版本:A、B,那么在A执行的过程当中,将服务平滑重启至B版本,具体做法如下 利用nginx的反向代理转发go服务端口,例如服务apiv1端口是1001,服务apiv2端口是1002, 现有nginx.conf配置如下 server{ # golang api location /golangapi/ { proxy_pass http://127.0.0.1:1001/; }} 假设现在我们需要将服务平滑重启至apiv2:1002,则只需要将nginx配置改为: server{ listen 80; server_name abc.com; # golang api location /golangapi/ { proxy_pass http://127.0.0.1:1002/;#这里更改端口号 ...
gorm Raw查询报错 sql converting argument $1 type unsupported type struct {}, a struct; invalid value, should be pointer to struct or slice; invalid value, should be pointer to struct or slice
golang gorm 查询时提示如下,即使sqlParam已经初始化过也一直提示无效值 报错内容sql: converting argument $1 type: unsupported type struct {}, a struct; invalid value, should be pointer to struct or slice; invalid value, should be pointer to struct or slice 原因:发起查询时,Raw方法第二个参数不能为空,并且需要在Raw方法的第一个sql语句中有调用@第二个参数中的字段 解决方案:增加 Placeholder , 初始化值为1,并在sql语句中调用 @Placeholder , 或者根据请求情况,增加判断是否要传入Raw方法的第二个参数 sql := "SELECT * FROM test WHERE @Placeholder " //SELECT * FROM test WHERE 1var sqlParam struct { Applyno s...
Gorm Raw Argument Unsupported Error
Fix unsupported struct value error when using Raw with parameter struct.
go goroutine chan 并发/通道 异步处理微信订单分账
最近在开发微信服务商,申请分账需要对每个订单单独发起,于是用到了golang的协程 ch := make(chan int, runtime.NumCPU())for i := 0; i < len(wechatOrderList); i++ { go modifyWxOrderProfit(&wechatOrderList[i], ch) ch <- i}close(ch)// 处理分账订单func modifyWxOrderProfit(wechatOrder *order.WechatOrder, ch chan int){ // 发起微信订单分账请求 // client.POST()... for v := range ch { fmt.Println("当前异步处理的是第",v,"个订单") }}
Go Goroutine Channel WeChat Profit Sharing
Parallelize WeChat profit-sharing per order using goroutines and buffered channel.
Python批量替换文件名,Python批量修改文件名前缀
import os#设定文件路径path="F:\\需要修改的文件路径\\"#遍历文件for file in os.listdir(path): if os.path.isfile(os.path.join(path,file))==True:#设置新文件名 new_name=file.replace("要替换的老的文件名内容","新的文件名内容")#重命名文件 os.rename(os.path.join(path,file),os.path.join(path,new_name))print ("complete!")