Flask timeout when serve using gunicorn

Flask timeout when serve using gunicorn

问题

项目基于Gunicorn+Flask去提供python接口服务,供前端调用。其中Flask的程序中有一环节是需要去通过传入的url去获取图片内容,然后进行后续的相应处理。问题来了,启动服务后,传入参数后,使用postman调用,对于内网链接能够正常返回结果,但是对于外网链接一直报错连接超时错误:

lib/python3.6/socket.py", line 713, in create_connection
    sock.connect(sa)
TimeoutError: [Errno 110] Connection timed out

During handling of the above exception, another exception occurred:

lib/python3.6/urllib/request.py", line 1320, in do_open
    raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 110] Connection timed out>

慢慢查看代码发现是卡在这一句上面了

 resp = urllib.request.urlopen(url)

但是单独传入一样的url,这部分代码是没有问题的能够正常获取链接对应的内容,在这个地方查了一下午的bug,最后发现是一个小的失误导致的。

解决方法

基于问题去查看相关的资料,有的人给出的原因说是由于gunicorn默认的timeout时间为30秒,可以对其进行配置文件进行设置来解决时间超时问题, 比如类似下面这种:

gunicorn -t 120

但尝试后还是会出现这种问题,也有相同的人问这个问题

https://stackoverflow.com/questions/60035871/flask-timeout-when-serve-using-gunicorn/62992081

情况一模一样,单独运行没有问题,串在一起出现问题了。

刚开始以为是外网地址链接会非常慢导致出现连接超时问题,但是按照上述设置等候时间,不管设置多久的时间还是报错,就知道应该不是gunicorn的问题。最后我找到这边的问题是代理服务器让我强制默认为空了,这是由于之前的一个下载fastdfs的时候报错解决的方法,这里程序暂时没有用到fastdfs,将其注释掉,能够正常访问外网地址,获取结果了。

os.environ['http_proxy'] = ""
os.environ['https_proxy'] = ""

-------> changed to 

# os.environ['http_proxy'] = ""
# os.environ['https_proxy'] = ""

总结

遇到bug时候不要慌,分析bug问题是什么,针对这个问题去找对应的解决方法即可,慢慢在程序中找点输出对应的内容,看看是哪一步可能出现问题了,找到对应的点,针对性的去找问题,这样可能更容易更快的去解决bug。

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uncle_ll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值