Again, thank you Mike!

I never see these issues happening locally, which is where I use gunicorn 
<https://github.com/benoitc/gunicorn> as the server. Your theory might 
explain that. The trace comes from our beta server online, which runs 
nginx/uwsgi <http://uwsgi-docs.readthedocs.io/en/latest/Nginx.html>. I'll 
poke around the configuration, maybe that'll show something.

Eventually though (in the next one-two months) I would like to move to 
gunicorn as the sole server, because handling API requests is the only 
thing it needs to do.

Cheers,
Jens


On Friday, September 29, 2017 at 9:55:30 AM UTC+10, Mike Bayer wrote:
>
> On Thu, Sep 28, 2017 at 7:17 PM,  <[email protected] <javascript:>> 
> wrote: 
> > Thank you, Mike! 
> > 
> > I would have never extracted your interpretation from the trace! (I 
> don’t 
> > know the code…) 
> > 
> > The two questions that arise now, though, are 
> > 
> >  - Why would connections drop out of the pool, is this a configuration 
> > problem that I should worry about? 
>
> something was already wrong with the connection when the pool got it 
> back, so it had to be discarded. as far as what was wrong, it had to 
> do with the request itself, and it was very possibly the web request's 
> client dropped the connection, e.g. user hit the stop button.     Not 
> sure what uswgi does but it might have called a thread.exit() / 
> SystemExit that interrupted PyMySQL's work on the socket.   This is 
> something we definitely see in the eventlet world at least. 
>
> >  - The request still failed with a 502 although, as you said, it’s a 
> > harmless exception. What is the proper way of handling these situations? 
>
> if uwsgi is killing off threads when a connection is cut, it might 
> want to be more graceful about that and at least log that the thread 
> was killed in the middle.   If this is in fact what's going on.    I 
> stick with apache/mod_wsgi for reasons like these. 
>
>
> > 
> > Still learning new things here, and I’m curious about your suggestions 
> :-) 
> > Jens 
> > 
> > 
> > On Friday, September 29, 2017 at 6:59:48 AM UTC+10, Mike Bayer wrote: 
> >> 
> >> On Thu, Sep 28, 2017 at 2:48 PM,  <[email protected]> wrote: 
> >> > Hello, 
> >> > 
> >> > I’m using SQLAlchemy (1.1.13) and SQLAlchemy-Utils (0.32.14) in the 
> >> > context 
> >> > of a Pyramid (1.9.1) web-browser, PyMySQL (0.7.11) as a driver, and 
> >> > mysql 
> >> > 5.6.3. I followed the Pyramid/Alchemy Cookiecutter implementation. 
> >> > 
> >> > On seemingly random requests (although all seem to be OPTIONS) I see 
> the 
> >> > following exception in the server logs (see also this PyMySQL issue): 
> >> > 
> >> > 2017-09-28 18:13:17,765 ERROR 
> >> > [sqlalchemy.pool.QueuePool][b'uWSGIWorker1Core0'] Exception during 
> reset 
> >> > or 
> >> > similar 
> >> > Traceback (most recent call last): 
> >> >   File 
> >> > "/var/www/…/lib64/python3.6/site-packages/sqlalchemy/engine/base.py", 
> >> > line 1182, in _execute_context 
> >> >     context) 
> >> >   File 
> >> > 
> "/var/www/…/lib64/python3.6/site-packages/sqlalchemy/engine/default.py", 
> >> > line 470, in do_execute 
> >> >     cursor.execute(statement, parameters) 
> >> >   File "/var/www/…/lib64/python3.6/site-packages/pymysql/cursors.py", 
> >> > line 
> >> > 166, in execute 
> >> >     result = self._query(query) 
> >> >   File "/var/www/…/lib64/python3.6/site-packages/pymysql/cursors.py", 
> >> > line 
> >> > 322, in _query 
> >> >     conn.query(q) 
> >> >   File 
> >> > "/var/www/…/lib64/python3.6/site-packages/pymysql/connections.py", 
> >> > line 856, in query 
> >> >     self._affected_rows = 
> self._read_query_result(unbuffered=unbuffered) 
> >> >   File 
> >> > "/var/www/…/lib64/python3.6/site-packages/pymysql/connections.py", 
> >> > line 1057, in _read_query_result 
> >> >     result.read() 
> >> >   File 
> >> > "/var/www/…/lib64/python3.6/site-packages/pymysql/connections.py", 
> >> > line 1340, in read 
> >> >     first_packet = self.connection._read_packet() 
> >> >   File 
> >> > "/var/www/…/lib64/python3.6/site-packages/pymysql/connections.py", 
> >> > line 1001, in _read_packet 
> >> >     % (packet_number, self._next_seq_id)) 
> >> > pymysql.err.InternalError: Packet sequence number wrong - got 102 
> >> > expected 8 
> >> > 
> >> > 
> >> > I see this error in different variations for the packet sequence. Any 
> >> > hint 
> >> > or tip to explain this issue is appreciated! 
> >> 
> >> the log seems to indicate the connection pool has gotten the 
> >> connection back and is attempting to emit a rollback() upon it.  These 
> >> can fail if the connection has already had some varieties of error 
> >> occur upon it, most often when the work on the connection was 
> >> interrupted, such as when receiving a greenlet or thread exit.   It's 
> >> likely when a WSGI request is interrupted, the cleanup logic here 
> >> fails because the connection has been thrown into an invalid state. 
> >> The connection is invalidated (e.g. discarded) in this case and is 
> >> harmless. 
> >> 
> >> 
> >> > 
> >> > Thank you! 
> >> > Jens 
> >> > 
> >> > -- 
> >> > 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 [email protected]. 
> >> > To post to this group, send email to [email protected]. 
> >> > 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 the Google 
> Groups 
> > "sqlalchemy" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to [email protected] <javascript:>. 
> > To post to this group, send email to [email protected] 
> <javascript:>. 
> > 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 the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to