[Zope3-Users] Re: Still trying to connect to ZODB from external
Jürgen Kartnaller
juergen at kartnaller.at
Wed May 9 04:04:00 EDT 2007
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
More information about the Zope3-users
mailing list