djangonauts / djorm-ext-pool Goto Github PK
View Code? Open in Web Editor NEWDB-API2 connection pool for Django (for postgresql, mysql and sqlite)
License: Other
DB-API2 connection pool for Django (for postgresql, mysql and sqlite)
License: Other
When running with DEBUG = True and the newest SQLAlchemy==0.9.0 im getting this:
File "/Users/xxx/.virtualenvs/sports/lib/python2.7/site-packages/sqlalchemy/util/langhelpers.py", line 264, in get_callable_argspec
if isinstance(fn, types.FunctionType):
RuntimeError: maximum recursion depth exceeded while calling a Python object
These are the lines causing it:
event.listen(Pool, 'checkout', partial(_log, 'retrieved from pool'))
event.listen(Pool, 'checkin', partial(_log, 'returned to pool'))
event.listen(Pool, 'connect', partial(_log, 'new connection'))
Env:
Django==1.6.1
psycopg2==2.5.1
djorm-ext-pool==0.8
South==0.8.4
SQLAlchemy==0.9.0
Running on:
Python 2.7.6
PostgreSQL 9.2
We should probably pin SQLAlchemy to maximum version 0.8.4, something like:
SQLAlchemy<0.9.0
Or better would be to find whats causing it on 0.9.0 :)
When I used the default setting, it created too many tcp connections to all mysql servers.
Below is the netstat
output:
$ netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 11 ip-20-147-13-90.e:mysql ip-20-35-134-55.e:49768 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-164-97-31.e:58440 TIME_WAIT
tcp 0 11 ip-20-147-13-90.e:mysql ip-20-180-43-21.e:37731 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-146-200-155:37748 TIME_WAIT
tcp 0 67 ip-20-147-13-90.e:mysql ip-20-146-188-234:33170 ESTABLISHED
tcp 0 11 ip-20-147-13-90.e:mysql ip-20-142-168-210:19936 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-167-191-91.:11942 TIME_WAIT
tcp 0 118 ip-20-147-13-90.e:mysql ip-20-63-152-115.:37376 ESTABLISHED
tcp 0 11 ip-20-147-13-90.e:mysql ip-20-35-151-224.:44295 ESTABLISHED
tcp 0 11 ip-20-147-13-90.e:mysql ip-20-7-146-43.ec:30313 ESTABLISHED
tcp 0 11 ip-20-147-13-90.e:mysql ip-20-237-183-161:14811 ESTABLISHED
tcp 0 63 ip-20-147-13-90.e:mysql ip-20-51-159-180.:18934 ESTABLISHED
tcp 0 67 ip-20-147-13-90.e:mysql ip-20-237-180-221:25828 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-167-147-106:55704 ESTABLISHED
tcp 0 11 ip-20-147-13-90.e:mysql ip-20-239-174-71.:15305 ESTABLISHED
tcp 0 0 ip-20-147-13-90.ec2:ssh ip-20-82-7-125.ec:21503 ESTABLISHED
tcp 0 118 ip-20-147-13-90.e:mysql ip-20-102-131-29.:32082 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-142-168-210:19934 ESTABLISHED
tcp 0 11 ip-20-147-13-90.e:mysql ip-20-140-203-10.:21455 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-203-129-31.:48701 TIME_WAIT
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-231-144-162:33444 TIME_WAIT
tcp 0 11 ip-20-147-13-90.e:mysql ip-20-35-134-55.e:49739 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-179-150-58.e:4329 TIME_WAIT
tcp 0 11 ip-20-147-13-90.e:mysql ip-20-180-43-21.e:37730 ESTABLISHED
tcp 0 11 ip-20-147-13-90.e:mysql ip-20-146-197-102:65134 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-146-179-38.:35911 TIME_WAIT
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-82-7-125.ec:22894 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-82-7-125.ec:22895 ESTABLISHED
tcp 0 67 ip-20-147-13-90.e:mysql ip-20-146-188-234:33169 ESTABLISHED
tcp 0 11 ip-20-147-13-90.e:mysql ip-20-239-174-71.:15308 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-82-7-125.ec:22893 ESTABLISHED
tcp 0 11 ip-20-147-13-90.e:mysql ip-20-7-146-43.ec:30318 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-145-206-206:41700 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-164-97-40.e:52329 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-145-188-249:33696 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-145-208-83.:62171 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-164-97-40.e:54684 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-35-134-55.e:10701 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-167-1-179.e:23625 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-203-129-90.:65386 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-145-188-249:33647 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-166-4-84.ec:27251 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-145-206-206:42821 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-164-97-40.e:56423 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-101-129-54.:32999 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-179-11-68.ec:2648 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-203-129-31.:15164 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-166-4-84.ec:26522 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-145-206-206:43381 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-179-11-68.e:65085 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-35-135-148.:51712 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-164-97-40.e:47584 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-35-134-55.e:12001 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-35-134-55.ec:8574 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-179-11-68.e:65237 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-203-129-31.:17380 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-102-131-53.:62236 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-164-97-31.e:30263 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-166-4-84.ec:22948 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-203-129-90.e:1063 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-179-11-68.ec:2657 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-164-97-31.e:25138 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-203-129-31.:16606 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-147-159-162.:7327 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-147-159-162:10120 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-166-4-84.ec:22639 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-145-188-249:33937 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-145-207-21.:39472 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-147-159-162.:6615 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-147-1-211.e:25378 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-164-97-31.e:31745 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-102-131-53.:60711 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-166-4-84.ec:23709 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-179-11-68.e:61297 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-147-159-162.:9445 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-167-1-179.e:15589 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-167-1-179.e:14818 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-166-4-84.ec:24320 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-35-135-148.:53248 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-145-206-206:41808 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-164-97-40.e:53944 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-231-144-162:16718 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-147-159-162.:6119 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-179-11-68.e:62465 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-164-97-40.e:52918 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-166-4-84.ec:23045 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-231-144-162:16195 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-167-1-179.e:22138 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-164-97-40.e:49799 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-203-129-90.e:5221 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-179-11-68.e:64446 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-146-188-234.:4882 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-203-129-31.:17187 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-102-131-29.e:2767 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-146-179-38.e:9290 ESTABLISHED
tcp 0 0 ip-20-147-13-90.e:mysql ip-20-179-11-68.e:64828 ESTABLISHED
...
按照您的教程加入后,启动报这个错误
Traceback (most recent call last):
File "C:\Program Files\Python37\lib\threading.py", line 917, in _bootstrap_inner
self.run()
File "C:\Program Files\Python37\lib\threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "C:\Program Files\Python37\lib\site-packages\django\utils\autoreload.py", line 54, in wrapper
fn(*args, **kwargs)
File "C:\Program Files\Python37\lib\site-packages\django\core\management\commands\runserver.py", line 120, in inner_run
self.check_migrations()
File "C:\Program Files\Python37\lib\site-packages\django\core\management\base.py", line 453, in check_migrations
executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
File "C:\Program Files\Python37\lib\site-packages\django\db\migrations\executor.py", line 18, in __init__
self.loader = MigrationLoader(self.connection)
File "C:\Program Files\Python37\lib\site-packages\django\db\migrations\loader.py", line 49, in __init__
self.build_graph()
File "C:\Program Files\Python37\lib\site-packages\django\db\migrations\loader.py", line 212, in build_graph
self.applied_migrations = recorder.applied_migrations()
File "C:\Program Files\Python37\lib\site-packages\django\db\migrations\recorder.py", line 73, in applied_migrations
if self.has_table():
File "C:\Program Files\Python37\lib\site-packages\django\db\migrations\recorder.py", line 56, in has_table
return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor())
File "C:\Program Files\Python37\lib\site-packages\django\db\backends\base\base.py", line 256, in cursor
return self._cursor()
File "C:\Program Files\Python37\lib\site-packages\django\db\backends\base\base.py", line 233, in _cursor
self.ensure_connection()
File "C:\Program Files\Python37\lib\site-packages\django\db\backends\base\base.py", line 217, in ensure_connection
self.connect()
File "C:\Program Files\Python37\lib\site-packages\django\db\backends\base\base.py", line 195, in connect
self.connection = self.get_new_connection(conn_params)
File "C:\Program Files\Python37\lib\site-packages\django\db\backends\mysql\base.py", line 227, in get_new_connection
return Database.connect(**conn_params)
File "C:\project\qhlive_python\djorm_pool\__init__.py", line 84, in connect
return self.manager.connect(*args, **kwargs)
File "C:\Program Files\Python37\lib\site-packages\sqlalchemy\pool.py", line 1427, in connect
return self.get_pool(*args, **kw).connect()
File "C:\Program Files\Python37\lib\site-packages\sqlalchemy\pool.py", line 1398, in get_pool
return self.pools[key]
File "C:\project\qhlive_python\djorm_pool\__init__.py", line 52, in __hash__
return hash(tuple(sorted(self.items())))
TypeError: '<' not supported between instances of 'type' and 'type'
After running tests, I get the following error when trying to destroy the db:
`....
Ran 91 tests in 18.146s
OK
Destroying test database for alias 'default'...
DatabaseError: database "test_dbname" is being accessed by other users
DETAIL: There is 1 other session using the database.`
function patch_mysql
class hashabledict(dict):
def __hash__(self):
return hash(tuple(sorted(list(self.items()))))
Python 2 is OK, Maybe it is occured by the different version of Python to convert data structure.
I can provide a travis.yml if travis is enabled for this repository.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.