Hi all,
I hit a problem when use sqlalchemy with mysql.
I found the problem is mysql's auto close to nonactive connection over 8
hours.
And , I googled a lot and find pool_recycle option for create_engine.
But seems does not work.
Here is my code:
engine = create_engine(db_url, echo=engine_echo,pool_recycle=30)
session = scoped_session(sessionmaker(bind=engine))
And in mysql, I set wait_timeout to 60 secs for testing.
After this, I still got exception here:
2014-01-12 22:32:45,325 INFO sqlalchemy.engine.base.Engine SELECT device.id
AS device_id, device.devicetoken AS device_devicetoken
FROM device
WHERE device.devicetoken = %s
LIMIT %s
INFO:sqlalchemy.engine.base.Engine:SELECT device.id AS device_id,
device.devicetoken AS device_devicetoken
FROM device
WHERE device.devicetoken = %s
LIMIT %s
2014-01-12 22:32:45,326 INFO sqlalchemy.engine.base.Engine ('323', 1)
INFO:sqlalchemy.engine.base.Engine:('323', 1)
ERROR:tornado.application:Uncaught exception, closing connection.
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/tornado/iostream.py", line 341, in
wrapper
callback(*args)
File "/usr/lib/python2.6/site-packages/tornado/stack_context.py", line
331, in wrapped
raise_exc_info(exc)
File "/usr/lib/python2.6/site-packages/tornado/stack_context.py", line
302, in wrapped
ret = fn(*args, **kwargs)
File "deviceserver.py", line 182, in send_message
tmp_usr =
session.query(Device).filter_by(devicetoken=self._devicetoken).first()
File
"/usr/lib/python2.6/site-packages/SQLAlchemy-0.8.3-py2.6-linux-x86_64.egg/sqlalchemy/orm/query.py",
line 2282, in first
ret = list(self[0:1])
File
"/usr/lib/python2.6/site-packages/SQLAlchemy-0.8.3-py2.6-linux-x86_64.egg/sqlalchemy/orm/query.py",
line 2149, in __getitem__
return list(res)
File
"/usr/lib/python2.6/site-packages/SQLAlchemy-0.8.3-py2.6-linux-x86_64.egg/sqlalchemy/orm/query.py",
line 2353, in __iter__
return self._execute_and_instances(context)
File
"/usr/lib/python2.6/site-packages/SQLAlchemy-0.8.3-py2.6-linux-x86_64.egg/sqlalchemy/orm/query.py",
line 2368, in _execute_and_instances
result = conn.execute(querycontext.statement, self._params)
File
"/usr/lib/python2.6/site-packages/SQLAlchemy-0.8.3-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
line 662, in execute
params)
File
"/usr/lib/python2.6/site-packages/SQLAlchemy-0.8.3-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
line 761, in _execute_clauseelement
compiled_sql, distilled_params
File
"/usr/lib/python2.6/site-packages/SQLAlchemy-0.8.3-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
line 874, in _execute_context
context)
File
"/usr/lib/python2.6/site-packages/SQLAlchemy-0.8.3-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
line 1024, in _handle_dbapi_exception
exc_info
File
"/usr/lib/python2.6/site-packages/SQLAlchemy-0.8.3-py2.6-linux-x86_64.egg/sqlalchemy/util/compat.py",
line 196, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File
"/usr/lib/python2.6/site-packages/SQLAlchemy-0.8.3-py2.6-linux-x86_64.egg/sqlalchemy/engine/base.py",
line 867, in _execute_context
context)
File
"/usr/lib/python2.6/site-packages/SQLAlchemy-0.8.3-py2.6-linux-x86_64.egg/sqlalchemy/engine/default.py",
line 324, in do_execute
cursor.execute(statement, parameters)
File "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", line 201,
in execute
self.errorhandler(self, exc, value)
File "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py", line
36, in defaulterrorhandler
raise errorclass, errorvalue
OperationalError: (OperationalError) (2006, 'MySQL server has gone away')
'SELECT device.id AS device_id, device.devicetoken AS device_devicetoken
\nFROM device \nWHERE device.devicetoken = %s \n LIMIT %s' ('323', 1)
--
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 http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.