On Tue, Nov 27, 2012 at 4:16 AM, Hynek Schlawack <h...@ox.cx> wrote: > Hi, > > I have a really bad time with the combination of a low-volume service and > adbapi.ConnectionPool, pyodbc, FreeTDS and Sybase. > > Basically my connections just time out and fail in weird, generic ways > like: > > Error: ('01000', '[01000] [FreeTDS][SQL Server]Unexpected EOF from the > server (20017) (SQLEndTran)') > > (but in many others too, there is no real pattern) >
Have you tried enabling reconnects (cp_reconnect=True)? If "select 1" doesn't work with your database you may also have to pass in custom cp_good_sql. > In my desperation, I’m employing for-loops for the SQL queries now. :( > > Since there isn’t much traffic (yet) I would like to just make > ConnectionPool close the connections and re-open fresh ones, as soon as > they are necessary. > > Is there some straight-forward way to do that? Or any better approach I’ve > overlooked? > Don't use ConnectionPool at all. Just have a function that does the SQL connect etc usually normal DB-API, and call it with twisted.internet.threads.deferToThread: def dbTxn(x): conn = db.connect(...) cursor = conn.cursor() cursor.execute() result = cursor.fetchall() conn.close() return result deferredResult = deferToThread(dbtxn, argForX) -- Itamar Turner-Trauring, Future Foundries LLC http://futurefoundries.com/ — Twisted consulting, training and support.
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python