[Zope] Running multiple transactions during single request
Charl Coetzee
charl at tygus.com
Wed Mar 26 14:34:49 EDT 2008
Hi,
I have an app under Plone (2.5.1, Zope 2.9.6, Five 1.4.3), with a
browser view that gets fed csv data, and creates a bunch of objects
(with some further processing) (essentially like a data import problem).
For various reasons, while this view is doing its work (ie during course
of the single request), it seems attractive to commit the added objects
regularly - e.g. to commit after every 5 newly created objects, say.
(as opposed to using savepoints).
I would like to confirm if a view like so:
from Products.Five.formlib import formbase
import transaction
class UploadForm( formbase.PageForm ):
...
...
@form.action("Process")
def process(self, action, data):
...
while someLongLoop:
...
# Create some persistent objects,
# set some attributes on them, etc.
...
if everyFifthPass:
transaction.commit()
transaction.begin()
# end of while loop
really does have the desired effect, where also ConflictError handling
etc continue to work as expected, without nasty side effects etc.
I've looked at ZPublisher/Publish.py that seems to do essentially this
in the publish() function, except that this also does recordMetaData() {
which method in turn carries the comment "Is this code needed?" -- but
I'm guessing this may be related to the "Undo" ZMI functionality?
Anyway my view is obviously not calling this repeatedly, is this cause
for concern? }
This is the deepest I've yet dug into the transaction machinery, so I
thought it would be prudent to ask the question -- google doesn't
have much to say on this one,
Thanks in advance for any insights,
Charl
More information about the Zope
mailing list