Florian,
you should definitely have a look at the package zc.async and/or
lovely.remotetask.
lovely.remotetask is in heavy use in our applications and contains a
scheduler like the scheduler provided in zope.
Jürgen
Florian Lindner wrote:
Hello,
I have a function called by a scheduler. Since it operates outside of Zope
context I need to create a connection to the ZODB in order to call a utility:
db = getUtility(ZODB.interfaces.IDatabase)
conn = db.open()
root = conn.root().data['Application']
zope.app.component.hooks.setSite(root["cs"])
utils = getUtilitiesFor(INewsfeed)
for i in utils:
print "Utility called:", i[0]
i[1].sendNotification()
conn.close()
This produces errors like:
Unhandled error in Deferred:
Traceback (most recent call last):
File "/home/florian/Zope3/src/twisted/internet/posixbase.py", line 220, in
run
self.mainLoop()
File "/home/florian/Zope3/src/twisted/internet/posixbase.py", line 228, in
mainLoop
self.runUntilCurrent()
File "/home/florian/Zope3/src/twisted/internet/base.py", line 561, in
runUntilCurrent
call.func(*call.args, **call.kw)
File "/home/florian/Zope3/src/twisted/internet/task.py", line 108, in
__call__
d = defer.maybeDeferred(self.f, *self.a, **self.kw)
--- <exception caught here> ---
File "/home/florian/Zope3/src/twisted/internet/defer.py", line 107, in
maybeDeferred
result = f(*args, **kw)
File "/home/florian/Desktop/zope/lib/python/CS/centershock/centershock.py",
line 34, in releaseRefreshEvent
conn.close()
File "/home/florian/Zope3/src/ZODB/Connection.py", line 268, in close
raise ConnectionStateError("Cannot close a connection joined to "
ZODB.POSException.ConnectionStateError: Cannot close a connection joined to a
transaction
What is the right way to do it?
Thanks,
Florian
_______________________________________________
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users