After asking at the uWSGI mailing list (see this thread 
<http://lists.unbit.it/pipermail/uwsgi/2017-October/008767.html>) the 
suggested solution was to enable the lazy-apps 
<http://uwsgi-docs.readthedocs.io/en/latest/Options.html#lazy-apps> flags. 
That seems to have worked...


On Friday, September 29, 2017 at 10:46:47 AM UTC+10, [email protected] 
wrote:
>
> 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]> 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]. 
>> > 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].
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