Getting "MySQL Server has gone away" when closing session

23 views
Skip to first unread message

Travis Briggs

unread,
Oct 24, 2018, 4:54:03 PM10/24/18
to sqlalchemy
Hi,

I'm trying to apply a unit of work pattern, where I'm processing all of the "items" in a category, and I'm opening my session before I query for the items in the category, then closing the session when the items are all processed.

However, this still could take several minutes and I'm getting the "MySQL Server has gone away" message on the session.close() call. This seems to be relatively innocuous: my app continues running and everything is fine, apparently. Just to note, I am using pool_pre_ping=True.

Just wondering if I should:
  1. Ignore this error, or
  2. Not be closing the session and just letting it get garbage collected.
Thanks,
-Travis

Mike Bayer

unread,
Oct 24, 2018, 6:35:47 PM10/24/18
to sqlal...@googlegroups.com
you shouldn't be getting that error and it is a sign something is not
working correctly. you'd need to review your session lifecycle
code.


>
> Thanks,
> -Travis
>
> --
> SQLAlchemy -
> The Python SQL Toolkit and Object Relational Mapper
>
> http://www.sqlalchemy.org/
>
> To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description.
> ---
> You received this message because you are subscribed to the Google Groups "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+...@googlegroups.com.
> To post to this group, send email to sqlal...@googlegroups.com.
> Visit this group at https://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.

Travis Briggs

unread,
Oct 24, 2018, 7:24:20 PM10/24/18
to sqlal...@googlegroups.com
On Wed, Oct 24, 2018 at 3:35 PM Mike Bayer <mik...@zzzcomputing.com> wrote:
On Wed, Oct 24, 2018 at 4:54 PM Travis Briggs <audi...@gmail.com> wrote:
>
> Hi,
>
> I'm trying to apply a unit of work pattern, where I'm processing all of the "items" in a category, and I'm opening my session before I query for the items in the category, then closing the session when the items are all processed.
>
> However, this still could take several minutes and I'm getting the "MySQL Server has gone away" message on the session.close() call. This seems to be relatively innocuous: my app continues running and everything is fine, apparently. Just to note, I am using pool_pre_ping=True.
>
> Just wondering if I should:
>
> Ignore this error, or
> Not be closing the session and just letting it get garbage collected.

you shouldn't be getting that error and it is a sign something is not
working correctly.      you'd need to review your session lifecycle
code.



I'm not in direct contact with the DBA for this app, but my understanding is that the database has very strict/limited timeouts for connections. Couldn't it be that the connection is simply timing out between the time I create it and the time I call session.close()? Would that be example of a problem with my session lifecycle code, that I'm just taking too long?

Thanks,
-Travis
 
>
> Thanks,
> -Travis
>
> --
> SQLAlchemy -
> The Python SQL Toolkit and Object Relational Mapper
>
> http://www.sqlalchemy.org/
>
> To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description.
> ---
> You received this message because you are subscribed to the Google Groups "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+...@googlegroups.com.
> To post to this group, send email to sqlal...@googlegroups.com.
> Visit this group at https://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.

--
SQLAlchemy -
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example.  See  http://stackoverflow.com/help/mcve for a full description.
---
You received this message because you are subscribed to a topic in the Google Groups "sqlalchemy" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/sqlalchemy/KaxgiVX-65k/unsubscribe.
To unsubscribe from this group and all its topics, send an email to sqlalchemy+...@googlegroups.com.

Mike Bayer

unread,
Oct 24, 2018, 8:50:51 PM10/24/18
to sqlal...@googlegroups.com
On Wed, Oct 24, 2018 at 7:24 PM Travis Briggs <audi...@gmail.com> wrote:
>
>
>
> On Wed, Oct 24, 2018 at 3:35 PM Mike Bayer <mik...@zzzcomputing.com> wrote:
>>
>> On Wed, Oct 24, 2018 at 4:54 PM Travis Briggs <audi...@gmail.com> wrote:
>> >
>> > Hi,
>> >
>> > I'm trying to apply a unit of work pattern, where I'm processing all of the "items" in a category, and I'm opening my session before I query for the items in the category, then closing the session when the items are all processed.
>> >
>> > However, this still could take several minutes and I'm getting the "MySQL Server has gone away" message on the session.close() call. This seems to be relatively innocuous: my app continues running and everything is fine, apparently. Just to note, I am using pool_pre_ping=True.
>> >
>> > Just wondering if I should:
>> >
>> > Ignore this error, or
>> > Not be closing the session and just letting it get garbage collected.
>>
>> you shouldn't be getting that error and it is a sign something is not
>> working correctly. you'd need to review your session lifecycle
>> code.
>>
>>
>
> I'm not in direct contact with the DBA for this app, but my understanding is that the database has very strict/limited timeouts for connections. Couldn't it be that the connection is simply timing out between the time I create it and the time I call session.close()? Would that be example of a problem with my session lifecycle code, that I'm just taking too long?

you shouldn't have connections checked out for an indeterminate period
of time, the connection should be checked out, do what you need to do
on it,then check it back in. long running transactions that sit
idly open is an anti pattern.
Reply all
Reply to author
Forward
0 new messages