推荐学习书目
› 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
jayzau1973
V2EX  ›  Python

请教一个关于 Mysql 连接的问题

  •  
  •   jayzau1973 · Dec 10, 2020 · 4349 views
    This topic created in 2157 days ago, the information mentioned may be changed or developed.
    用 flask 写了个小后台,数据库用的 mysql 。时间长了之后 mysql 连接会自动断开导致报错( orm 用的 peewee ):
    ```
    raise err.InterfaceError("(0, '')")
    peewee.InterfaceError: (0, '')
    ```
    有大佬知道怎么解决这个问题吗...
    17 replies  •  2021-01-21 11:45:19 +08:00
    dongxiao
    dongxiao
    Dec 10, 2020 via Android
    1
    我用的 sqlalchemy,采用的方法是设置超时后把 session 设成 global,然后开了个多线程在超时前销毁 session 并重建,用的地方 import 这个包就行
    yagamil
    yagamil
    Dec 10, 2020
    2
    持久化连接池
    jayzau1973
    jayzau1973
    OP
    Dec 10, 2020
    3
    @dongxiao 我在想难道每个写后端的都要这样搞吗,感觉不太合理。PHP 就不用自己去优化
    jayzau1973
    jayzau1973
    OP
    Dec 10, 2020
    4
    @yagamil 连接池倒是有 `PooledMySQLDatabase`,但好像无法持久化...
    676529483
    676529483
    Dec 10, 2020
    5
    数据库连接要在请求结束时关闭,或者交还给连接池,要主动释放资源,flask 可以通过钩子做
    wewin
    wewin
    Dec 10, 2020
    6
    大概过了多久?我记得 mysql 连接,闲置 8 小时会断开
    zhanglintc
    zhanglintc
    Dec 10, 2020
    7
    初始化应该有个自动重连的参数可以设置,找找文档看看呢
    MaxFang
    MaxFang
    Dec 10, 2020
    8
    @jayzau1973 非优化过的框架里面,php 也是没有超时自动重连的吧。一般 mysql 默认连接 8 小时。以前踩过类似的坑。
    littlewing
    littlewing
    Dec 10, 2020 via iPhone
    9
    把数据库的超时断开连接时间调大
    jayzau1973
    jayzau1973
    OP
    Dec 11, 2020
    10
    @wewin
    @littlewing
    超时时间调过了,不过即使时间再长,终会有断开的一天吧。想要有一个自动重连的功能
    jayzau1973
    jayzau1973
    OP
    Dec 11, 2020
    11
    @MaxFang 嘿嘿嘿 PHP 就接触过一点 laravel 框架
    jayzau1973
    jayzau1973
    OP
    Dec 11, 2020
    12
    @zhanglintc 好的我看看
    Rache1
    Rache1
    Dec 11, 2020
    13
    Laravel 是有自动重连的

    \Illuminate\Database\DetectsLostConnections::causedByLostConnection
    daytonight
    daytonight
    Dec 11, 2020
    14
    使用前 ping 一次 mysql,失败则重新建立连接,sqlalchemy 可以设置 pool_pre_ping 参数。
    meshell
    meshell
    Dec 11, 2020
    15
    发个 select 1 呗然后重连
    viiii
    viiii
    Jan 21, 2021
    16
    不知道楼主解决这个问题没有? 一样在这里被卡住了
    jayzau1973
    jayzau1973
    OP
    Jan 21, 2021❤️1
    17
    @viiii 没呢 断了手动重启- -
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4944 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 07:07 · PVG 15:07 · LAX 23:07 · JFK 02:07
    ♥ Do have faith in what you're doing.