On Dec 18, 2005, at 2:33 PM, Ian Bicking wrote: > James Y Knight wrote: > >> I'm worried about database access. Most DBAPI adapters have >> threadsafety level 2: "Threads may share the module and >> connections.". So with those, at least, it should be fine to move >> a connection between threads, since "share OK" implies "move >> OK". However, no documentation I've found has said anything >> separately about whether it's safe to _move_ a cursor between >> threads. It seems likely to me that it would not be safe, at >> least in some database adapters. And if it's not safe, that means >> a WSGI result iterator cannot use any DBAPI cursor functionality >> which seems a drag. >> Does anybody have practical experience with the safety of moving >> a DBAPI cursor between threads? >> > > I haven't done that, but SQLite (2?) notably doesn't allow you to > move a connection between threads. I'm not actually sure what > problems it causes if you do move them -- it may simply be an > overzealous warning. > > CCing DB-SIG -- people there might know more details.
Okay, so I think the overall recommendation from DB-SIG is "don't do that". I'm not sure where that leaves the WSGI discussion now? "Don't use databases from a result iterator", I guess (unless threadsafety == 3)? But do anybody else's WSGI server implementations move apps between threads? I don't especially want to make Twisted's be unique in this way even if it is technically allowed, as I can only see it causing problems when people's apps *do* try to use databases from result iterators and *do* work everywhere else... James _______________________________________________ Web-SIG mailing list Web-SIG@python.org Web SIG: http://www.python.org/sigs/web-sig Unsubscribe: http://mail.python.org/mailman/options/web-sig/archive%40mail-archive.com