--- /dev/null
+import gevent.monkey
+gevent.monkey.patch_all()
+
+import logging
+logging.basicConfig()
+#logging.getLogger("sqlalchemy.pool").setLevel(logging.INFO)
+from sqlalchemy import event
+import random
+import sys
+from sqlalchemy import create_engine
+import traceback
+
+engine = create_engine('mysql+pymysql://scott:tiger@localhost/test',
+ pool_size=50, max_overflow=0)
+
+@event.listens_for(engine, "connect")
+def conn(*arg):
+ print "new connection!"
+
+def worker():
+ while True:
+ conn = engine.connect()
+ try:
+ trans = conn.begin()
+ for i in range(5):
+ conn.execute("SELECT 1+1")
+ gevent.sleep(random.random() * 1.01)
+
+ except:
+ #traceback.print_exc()
+ sys.stderr.write('X')
+ else:
+ conn.close()
+ sys.stderr.write('.')
+
+
+def main():
+ for i in range(40):
+ gevent.spawn(worker)
+
+ gevent.sleep(3)
+
+ while True:
+ result = list(engine.execute("show processlist"))
+ engine.execute("kill %d" % result[-2][0])
+ print "\n\n\n BOOM!!!!! \n\n\n"
+ gevent.sleep(5)
+ print(engine.pool.status())
+
+
+main()