Created
May 9, 2014 18:04
-
-
Save methane/7bb1dcada695d65ebbf1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ python sample.py | |
...........................................................................................................................................................................................................................................................ERROR:sqlalchemy.pool.QueuePool:Exception closing connection None | |
Traceback (most recent call last): | |
File "/Users/inada-n/venvs/flask-gevent-pymysql/lib/python2.7/site-packages/sqlalchemy/pool.py", line 244, in _close_connection | |
self._dialect.do_close(connection) | |
File "/Users/inada-n/venvs/flask-gevent-pymysql/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 411, in do_close | |
dbapi_connection.close() | |
AttributeError: 'NoneType' object has no attribute 'close' | |
Traceback (most recent call last): | |
File "/Users/inada-n/venvs/flask-gevent-pymysql/lib/python2.7/site-packages/gevent/greenlet.py", line 327, in run | |
result = self._run(*self.args, **self.kwargs) | |
File "sample.py", line 23, in worker | |
Session.remove() | |
File "/Users/inada-n/venvs/flask-gevent-pymysql/lib/python2.7/site-packages/sqlalchemy/orm/scoping.py", line 86, in remove | |
self.registry().close() | |
File "/Users/inada-n/venvs/flask-gevent-pymysql/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 999, in close | |
transaction.close() | |
File "/Users/inada-n/venvs/flask-gevent-pymysql/lib/python2.7/site-packages/sqlalchemy/orm/session.py", line 437, in close | |
connection.close() | |
File "/Users/inada-n/venvs/flask-gevent-pymysql/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 640, in close | |
del self.__connection | |
AttributeError: _Connection__connection | |
<Greenlet at 0x10e62acd0: worker> failed with AttributeError | |
..................................................................................................................................................................................................... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import gevent.monkey | |
gevent.monkey.patch_all() | |
import logging | |
logging.basicConfig() | |
import random | |
import sys | |
from sqlalchemy import create_engine | |
from sqlalchemy.orm import scoped_session, sessionmaker | |
engine = create_engine('mysql+pymysql://root@localhost/test', | |
pool_size=2, max_overflow=100, pool_recycle=5) | |
Session = scoped_session(sessionmaker(bind=engine)) | |
stop = False | |
def worker(): | |
global stop | |
try: | |
while True: | |
Session.execute("SELECT 1+1") | |
gevent.sleep(random.random()*10) | |
Session.remove() | |
sys.stderr.write('.') | |
finally: | |
stop = True | |
def main(): | |
for i in range(100): | |
gevent.spawn(worker) | |
gevent.sleep(10) | |
result = list(engine.execute("show processlist")) | |
engine.execute("kill %d" % result[-2][0]) | |
while not stop: | |
gevent.sleep(1) | |
gevent.sleep(10) | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment