I've set up 
https://bitbucket.org/zzzeek/sqlalchemy/issues/4028/move-cant-connect-handling-outside-of
to deal with the misleading "pool.Empty" error for 1.2, though that is
not the problem you're having here.

On Fri, Jul 14, 2017 at 5:57 PM, Mike Bayer <mike...@zzzcomputing.com> wrote:
> that "mysqldb" URL is not mysql-connector - it's MySQL-Python (old and
> unmaintained) or mysqlclient (much better, if you have it installed
> and not conflicting w/ MySQL-Python).   You'd need to specify
> "mysql+mysqlconnector://" to use that DBAPI, but also I'd recommend
> trying "mysql+pymysql://" to see if you get better results.
>
> as far as "can't connect to server" you should make sure you are not
> surpassing your max_connections limit, though it should be emitting
> different error message for that.
>
> The Queue.Empty error is not the "error", it has to do with how the
> QueuePool works internally to test that the pool is empty, and Python
> 3 can't help but report every exception in the chain.   The error is
> the can't connect to server.
>
>
>
> On Fri, Jul 14, 2017 at 5:41 PM, josip povreslo
> <josip.povre...@gmail.com> wrote:
>> In addition to the previous email, what I do is the following:
>>
>> When request comes in:
>> self.mysql_engine =
>> create_engine('mysql+mysqldb://{}:{}@{}/{}'.format(self.db_params['dbuser'],
>> self.db_params['dbpass'], self.db_params['db_hosts'][db_host_index],
>> self.db_params['dbname']), pool_recycle=3600,
>> connect_args={'connect_timeout': 2})
>>
>> And then when need to interact with the dB:
>>
>> connection = self.mysql_engine.connect()
>> connection.execute("raw query")
>> connection.close()
>>
>>
>> Best Regards,
>> Josip
>>
>> On Friday, July 14, 2017 at 11:36:26 PM UTC+2, josip povreslo wrote:
>>>
>>> Hello,
>>>
>>> As mentioned in the subject, we have the following packages installed:
>>>
>>> Python 3.5
>>> mysql-connector==2.1.6
>>> SQLAlchemy==1.1.11
>>>
>>> Our service is working until we get a bit more traffic (40 - 50 req/min),
>>> although I'm still not 100% if it's a pattern, however, then we get this
>>> error:
>>>
>>> Traceback (most recent call last):
>>>   File "/usr/local/lib64/python3.5/site-packages/sqlalchemy/pool.py", line
>>> 1122, in _do_get
>>>     return self._pool.get(wait, self._timeout)
>>>   File
>>> "/usr/local/lib64/python3.5/site-packages/sqlalchemy/util/queue.py", line
>>> 145, in get
>>>     raise Empty
>>> sqlalchemy.util.queue.Empty
>>> During handling of the above exception, another exception occurred:
>>> Traceback (most recent call last):
>>>   File
>>> "/usr/local/lib64/python3.5/site-packages/sqlalchemy/engine/base.py", line
>>> 2147, in _wrap_pool_connect
>>>     return fn()
>>>   File "/usr/local/lib64/python3.5/site-packages/sqlalchemy/pool.py", line
>>> 328, in unique_connection
>>>     return _ConnectionFairy._checkout(self)
>>>   File "/usr/local/lib64/python3.5/site-packages/sqlalchemy/pool.py", line
>>> 766, in _checkout
>>>     fairy = _ConnectionRecord.checkout(pool)
>>>   File "/usr/local/lib64/python3.5/site-packages/sqlalchemy/pool.py", line
>>> 516, in checkout
>>>     rec = pool._do_get()
>>>   File "/usr/local/lib64/python3.5/site-packages/sqlalchemy/pool.py", line
>>> 1138, in _do_get
>>>     self._dec_overflow()
>>>   File
>>> "/usr/local/lib64/python3.5/site-packages/sqlalchemy/util/langhelpers.py",
>>> line 66, in __exit__
>>>     compat.reraise(exc_type, exc_value, exc_tb)
>>>   File
>>> "/usr/local/lib64/python3.5/site-packages/sqlalchemy/util/compat.py", line
>>> 187, in reraise
>>>     raise value
>>>   File "/usr/local/lib64/python3.5/site-packages/sqlalchemy/pool.py", line
>>> 1135, in _do_get
>>>     return self._create_connection()
>>>   File "/usr/local/lib64/python3.5/site-packages/sqlalchemy/pool.py", line
>>> 333, in _create_connection
>>>     return _ConnectionRecord(self)
>>>   File "/usr/local/lib64/python3.5/site-packages/sqlalchemy/pool.py", line
>>> 461, in __init__
>>>     self.__connect(first_connect_check=True)
>>>   File "/usr/local/lib64/python3.5/site-packages/sqlalchemy/pool.py", line
>>> 651, in __connect
>>>     connection = pool._invoke_creator(self)
>>>   File
>>> "/usr/local/lib64/python3.5/site-packages/sqlalchemy/engine/strategies.py",
>>> line 105, in connect
>>>     return dialect.connect(*cargs, **cparams)
>>>   File
>>> "/usr/local/lib64/python3.5/site-packages/sqlalchemy/engine/default.py",
>>> line 393, in connect
>>>     return self.dbapi.connect(*cargs, **cparams)
>>>   File "/usr/local/lib64/python3.5/site-packages/MySQLdb/__init__.py",
>>> line 81, in Connect
>>>     return Connection(*args, **kwargs)
>>>   File "/usr/local/lib64/python3.5/site-packages/MySQLdb/connections.py",
>>> line 191, in __init__
>>>     super(Connection, self).__init__(*args, **kwargs2)
>>> _mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server
>>> on 'dbhost_obviously' (4)")
>>>
>>> We haven't been seeing this error up until recently when we ported our
>>> service to Python 3.5. I've read most of the articles related to this queue
>>> empty error and most of those are from '12 or '13 and mentioning immature
>>> mysql drivers. Is this still the case, should we search for an alternative
>>> to mysql-connector or alternative to something else? Any help or guidance is
>>> appreciated!
>>>
>>> Thanks!
>>>
>>> Best,
>>> Josip
>>
>> --
>> 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+unsubscr...@googlegroups.com.
>> To post to this group, send email to sqlalchemy@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 the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to