用threading 解决 gunicorn worker timeout
产生worker timeout 的背景
while 1:
.....
time.sleep(1)
gunicorn运行起来,只等待了30s,就卡住了,没报任何异常或err,查了gunicorn 官方文档,原来是线程默认等待30s 就kill 掉,再restart
http://docs.gunicorn.org/en/stable/settings.html
timeout
-t INT, --timeout INT
30
Workers silent for more than this many seconds are killed and restarted.
Generally set to thirty seconds. Only set this noticeably higher if you’re sure of the repercussions for sync workers. For the non sync workers it just means that the worker process is still communicating and is not tied to the length of time required to handle a single request.
根本原因找到了,在gunicorn启动加了--timeout 120 ,还是超过30s 就worker timeout.搜了一圈stack没发现好的解决方法。
解决这个问题,目前最好的方法,就是在程序改代码,原先是主线程调用,用threading包装一下
如:
import threading
t = threading.Thread(name = '', target = func ,kwargs{})
t.daemon = True
t.start()
t = threading.Thread(name='result_package', target=result_package, args=(pack_name, task, issue))
t.daemon = True
t.start()
这样就在主线程下,把方法包装起来。
顺便用
Event().wait(15) 替代 time.sleep(16)
这样写法的好处是不占用cpu,释放!
刚开始,分析原因花了不少时间,几行代码就把worker timeout解决了。之前试了map.thread不行。
准备用队列(celery+redis)替代原来的逻辑,只是工作量有点大,太重了。
用threading 解决 gunicorn worker timeout的更多相关文章
- --解决Lock wait timeout exceeded; try restarting transaction
--解决Lock wait timeout exceeded; try restarting transaction select * from information_schema.innodb_t ...
- 更改pip安装源的镜像解决安装总是timeout的情况
由于国外的pip源总是由于各种原因不能被访问或者网速过慢,而造成的timeout错误 解决方法是修改pip的配置文件(如果没有配置文件在相应的地方新建,配置文件的路径和名字参考这里),设置安装包时候访 ...
- 解决 504 Gateway Time-out和502 Bad Gateway(nginx)
504 Gateway Time-out 问题所在: 所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI. 一般看来, 这种情况可能是由于nginx默认的fastcgi进程响应的缓 ...
- 解决InetAddress.isReachable(timeout)在windows xp始终返回false的bug
笔者最近在做产品,其中一个环节用到ping测试主机是否在线. 开发环境:Windows 7 64bit+JDK1.8 x64 以下是检测主机是否在线,开发环境中测试通过 public static b ...
- 更改pip安装源的镜像解决安装总是timeout的情况(pip 豆瓣镜像源)
由于国外的pip源总是由于各种原因不能被访问或者网速过慢,而造成的timeout错误 解决方法是修改pip的配置文件(如果没有配置文件在相应的地方新建,配置文件的路径和名字参考这里),设置安装包时候访 ...
- 如何解决“504 Gateway Time-out”错误
做网站的同学经常会发现一些nginx服务器访问时候提示504 Gateway Time-out错误,一般情况下是由nginx默认的fastcgi进程响应慢引起的,但也有其他情况,这里我总结了一些解决办 ...
- 解决504 Gateway Time-out(nginx)
504 Gateway Time-out问题常见于使用nginx作为web server的服务器的网站 我遇到这个问题是在需要插入一万多条数据时候遇到的 一般看来, 这种情况可能是由于nginx默认的 ...
- 解决jenkins git timeout的问题
进入项目配置(project configure) "源码管理"选项卡中,找到Additional Behaviours点击旁边的 add image.png 点击advanc ...
- 解决zabbix“ZBX_NOTSUPPORTED: Timeout while executing a shell script”报错
如题所示,在zabbix_server使用zabbix_get获取自定义“UserParameter”对应的脚本的数据时,出现了如题所示的报错信息 [root@nmp01 scripts]# /usr ...
随机推荐
- 02 - Jmeter4.x正则表达式以及跨线程使用变量
话不多说 直接开撸 上图可以看出,有两个请求,其中第二个请求返回了登录超时,结合第一个登录接口来看,这个是需要header请求内容的也就是 token:当然设置一个token又怎么可能难得倒我们,无非 ...
- POJ-1287.Network(Kruskal + Prim + Prim堆优化)
Networking Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 19674 Accepted: 10061 Desc ...
- 2018CCPC吉林赛区(重现赛)
http://acm.hdu.edu.cn/contests/contest_show.php?cid=867 A题,直接分块,不知道正解是什么. #include<bits/stdc++.h& ...
- vue2.0在IE11无法打开的解决办法
npm 安装bebel-polyfill npm install --save-dev babel-polyfill 在webpack.base.conf.js文件中将 module.exports ...
- vue 防抖节流函数——组件封装
防抖(debounce) 所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间. 节流(throttle) 所谓节流,就是指连续触发事件但是在 ...
- redis 命令大全
全局命令: 1.查看所有键:keys * 2.键总数:dbsize 3.检查键是否存在:exists key 4.删除键:del key [key ...] 5.键过期:expire key seco ...
- openstack stein部署手册 1. 准备
# 控制节点与计算节点,分别指定静态解析 /etc/hosts 192.168.123.201 controller 192.168.123.202 compute01 # 控制节点与计算节点,分别安 ...
- 使用logstash同步MongoDB数据到es
input{ mongodb{ codec => "json" uri => 'mongodb://127.0.0.1:27017/kuaibao' placehold ...
- MySQL--18 报错总结
报错1: 报错原因:MySQL的socket文件目录不存在. 解决方法: 创建MySQL的socket文件目录 mkdir /application/mysql-5.6.38/tmp 报错2: 报错原 ...
- python常用函数 T
timedelta() timedelta方法可以表示一个时间段,并可以进行计算,而且可以直接对datetime计算. 例子: today() datetime的today函数可以表示现在的时间. 例 ...