推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
NeverBelieveMe
V2EX  ›  Python

flask_sqlalchemy MySQL server has gone away (BrokenPipeError(32, 'Broken pipe'))

  •  
  •   NeverBelieveMe · Jan 2, 2019 · 3414 views
    This topic created in 2707 days ago, the information mentioned may be changed or developed.
    这个问题有大佬碰到过么?不知道怎么解决,网上搜了 SQLALCHEMY_POOL_SIZE,SQLALCHEMY_POOL_RECYCLE 这两个参数设定的方案也不成功。现在不太清楚怎么解决。而且也不明白什么原因导致的问题。
    12 replies    2019-01-03 12:03:12 +08:00
    myyou
        1
    myyou  
       Jan 2, 2019
    这个表示 mysql 连接已经断开了,SQLALCHEMY_POOL_RECYCLE 设置短一些,或者不使用连接池,去掉 SQLALCHEMY_POOL_SIZE 和 SQLALCHEMY_POOL_RECYCLE
    liuzhedash
        2
    liuzhedash  
       Jan 2, 2019
    这要看 mysql 的 error.log 来确定问题,你改 sqlalchemy 那俩参数似乎并无根据呀?
    NeverBelieveMe
        3
    NeverBelieveMe  
    OP
       Jan 2, 2019
    @myyou 我原来没有设置出了问题,然后才加的,加了也没用。
    NeverBelieveMe
        4
    NeverBelieveMe  
    OP
       Jan 2, 2019
    @liuzhedash 这样啊,那我去找找看 mysql 的日志。
    qq316107934
        5
    qq316107934  
       Jan 2, 2019 via Android
    session 泄露没有关闭吧,用 try catch 加上下文管理器试试?
    NeverBelieveMe
        6
    NeverBelieveMe  
    OP
       Jan 2, 2019
    @qq316107934 session 每个请求内用完都要关掉么?
    qq316107934
        7
    qq316107934  
       Jan 2, 2019
    @NeverBelieveMe #6 有些版本的 sqlalchemy session 池管理有问题,用完关掉不是很影响效率,而且能解决报错的问题。
    xayoung
        8
    xayoung  
       Jan 2, 2019
    我是每次用完 session 关掉,才完全解决这个问题的。
    est
        9
    est  
       Jan 2, 2019   ❤️ 2
    @qq316107934

    其实大家不用猜了。python 的几乎所有库的连接池都有问题

    原因很简单,连接池应该在一定超时时间 idle 之后去自动重连一个的。python 的 threading、协程的状况,几乎没有一个库去实现一个 timer 主动去轮换连接。都是一个 db 操作的动作再去检查连接。然后远端主动关闭,python 的 tcp 其实是没法响应 TIME_WAIT 的。于是一发过去就 Broken pipe。。
    Sidewalk5800
        10
    Sidewalk5800  
       Jan 2, 2019
    @est 那应该咋解决?就是有那种好久没人使用的系统,一来又一顿猛着用那种
    tanszhe
        11
    tanszhe  
       Jan 2, 2019 via Android
    几行代码
    就能搞定的事情
    fanhaipeng0403
        12
    fanhaipeng0403  
       Jan 3, 2019
    db.session.close()

    每次都关掉,绝对会解决
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1104 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 5414617a · 54ms · UTC 18:19 · PVG 02:19 · LAX 11:19 · JFK 14:19
    ♥ Do have faith in what you're doing.