mirror of
https://github.com/psycopg/psycopg2.git
synced 2025-08-04 20:30:09 +03:00
Fixed multi-thread connection initialization for ZPsycopgDA.
The connection initialization (transaction isolation, typecasts) was only done for first connection. When there are multiple threads running in parallel, connections where used which had not been initialized correctly.
This commit is contained in:
parent
3e1908c55d
commit
5920d4f25d
42
ZPsycopgDA/test_da.py
Normal file
42
ZPsycopgDA/test_da.py
Normal file
|
@ -0,0 +1,42 @@
|
|||
# zopectl run script to test the DA/threading behavior
|
||||
#
|
||||
# Usage: bin/zopectl run test_da.py "dbname=xxx"
|
||||
#
|
||||
from Products.ZPsycopgDA.DA import ZDATETIME
|
||||
from Products.ZPsycopgDA.db import DB
|
||||
import sys
|
||||
import threading
|
||||
|
||||
|
||||
dsn = sys.argv[1]
|
||||
|
||||
|
||||
typecasts = [ZDATETIME]
|
||||
|
||||
|
||||
def DA_connect():
|
||||
db = DB(dsn, tilevel=2, typecasts=typecasts)
|
||||
db.open()
|
||||
return db
|
||||
|
||||
|
||||
def assert_casts(conn, name):
|
||||
connection = conn.getcursor().connection
|
||||
if (connection.string_types ==
|
||||
{1114: ZDATETIME, 1184: ZDATETIME}):
|
||||
print '%s pass\n' % name
|
||||
else:
|
||||
print '%s fail (%s)\n' % (name, connection.string_types)
|
||||
|
||||
|
||||
def test_connect(name):
|
||||
assert_casts(conn1, name)
|
||||
|
||||
|
||||
conn1 = DA_connect()
|
||||
t1 = threading.Thread(target=test_connect, args=('t1',))
|
||||
t1.start()
|
||||
t2 = threading.Thread(target=test_connect, args=('t2',))
|
||||
t2.start()
|
||||
t1.join()
|
||||
t2.join()
|
Loading…
Reference in New Issue
Block a user