小编ron*_*ddd的帖子

MySQL服务器已经消失 - 通过checkout事件处理程序断开连接处理不起作用

更新3/4:

我做了一些测试并证明使用checkout事件处理程序检查断开连接是否与Elixir一起使用.开始认为我的问题与session.commit()从子进程调用有关?更新:我只是通过调用session.commit()下面的子进程,更新示例来反驳自己.我正在使用多处理模块来创建子流程.

这是代码,显示它应该如何工作(甚至没有使用pool_recycle!):

from sqlalchemy import exc
from sqlalchemy import event
from sqlalchemy.pool import Pool
from elixir import *
import multiprocessing as mp

class SubProcess(mp.Process):
    def run(self):
        a3 = TestModel(name="monkey")
        session.commit()

class TestModel(Entity):
    name = Field(String(255))

@event.listens_for(Pool, "checkout")
def ping_connection(dbapi_connection, connection_record, connection_proxy):
    cursor = dbapi_connection.cursor()
    try:
        cursor.execute("SELECT 1")
    except:
        # optional - dispose the whole pool
        # instead of invalidating one at a time
        # connection_proxy._pool.dispose()

        # raise DisconnectionError - pool will …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy multiprocessing mysql-python python-elixir

8
推荐指数
1
解决办法
5370
查看次数