Thanks for another clear answer! I'll simply ignore zc.twist (for now at least) and set up a classic thread pool. I'll still probably use zc.twist's source as an example of how to write transaction retrial on ConflicErrors and ClientDisconnecteds as I haven't found anything similar elsewhere.
Erik 2011/7/29 Gary Poster <gary.pos...@gmail.com>: > > On Jul 28, 2011, at 6:38 PM, Erik Allik wrote: > >> Gary, since you're the author of zc.twist (as I understand), I take >> this as an exhaustive answer, and thank you :) >> >> However, I'm still curious to know zc.twist would provide any benefit >> when used together with a thread pool. >> The thread examples in its README (which I find hard to understand) >> indicate that there must be some meaning to using zc.twist with >> threads. > > The threads in the README are there to let me explore a running reactor > within the doctest. They are not anything to emulate. > > The README overstates zc.twist's usefulness. As you point out, it blocks. > If you assume that the ZODB is functioning normally, it won't block "much" > but with standard definitions of blocking, it fails. For zc.async, that's > fine--but a "while True" loop and a time.sleep() to give some breathing room > probably would have been fine, with hindsight, and much simpler. The use of > Twisted is a very questionable convenience, and the way zc.async uses Twisted > is not to be copied 99% or more of the time. > > Gary > > >> >> Thanks again and best regards, >> Erik >> >> >> >> 2011/7/29 Gary Poster <gary.pos...@gmail.com>: >>> Hello Erik. As the author, I'll suggest that you move on to a ZODB >>> connection pool used by the usual Twisted-provided thread pool. zc.twist >>> is maybe interesting and maybe clever, but of very limited usefulness. I >>> suspect it is only used in zc.async, and that's probably as it should be. >>> It's a case of premature generalization. >>> >>> If you are going to use Twisted in anything like a normal way, and the ZODB >>> in anything like a normal way, use a connection pool and threads. >>> >>> Best, >>> >>> Gary >>> >>> >>> On Jul 28, 2011, at 4:12 PM, Erik Allik wrote: >>> >>>> Hello everyone, >>>> >>>> I hope this is the right mailing list to post this question to. >>>> >>>> I'm trying to build an Twisted application that uses ZODB and I've >>>> also found zc.twist. >>>> I've read its README as well as the source code to try to understand >>>> how exactly and why I should use zc.twist, and also asked the same >>>> questions on irc.freenode.net #zope but without a conclusive answer. >>>> >>>> What I'm not able to understand is whether using zc.twist will allow >>>> me to do all ZODB access in the main Twisted thread, or if still need >>>> to set up a thread pool and deferToThread any code that accesses the >>>> DB. >>>> >>>> The README of zc.twist has: >>>> "Everything can be done within the main thread, so it can be full-bore >>>> Twisted usage, without threads." >>>> >>>> However, looking at the source code of zc.twist, I cannot find any >>>> reference to async communication (callbacks/polling) with ZODB, so >>>> it's difficult to conclude that all DB access is non-blocking and can >>>> be done in a single thread. Also, there are some examples with threads >>>> in the README. >>>> >>>> I would highly appreciate if somebody with a clearer understanding of >>>> this could explain to me whether I in fact need to set up a thread >>>> pool, and in any case, what exactly is zc.twist for regardless of >>>> whether it needs to be used with a threadpool or not. >>>> >>>> Thanks in advance! >>>> >>>> Regards, >>>> Erik Allik >>>> >>>> P.S. I'd be very thankful for any references to open source >>>> projects/code using ZODB with Twisted, or even zc.twist (besides >>>> zc.async). >>>> _______________________________________________ >>>> For more information about ZODB, see the ZODB Wiki: >>>> http://www.zope.org/Wikis/ZODB/ >>>> >>>> ZODB-Dev mailing list - ZODB-Dev@zope.org >>>> https://mail.zope.org/mailman/listinfo/zodb-dev >>> >>> > > _______________________________________________ For more information about ZODB, see the ZODB Wiki: http://www.zope.org/Wikis/ZODB/ ZODB-Dev mailing list - ZODB-Dev@zope.org https://mail.zope.org/mailman/listinfo/zodb-dev