← Back to team overview

launchpad-dev team mailing list archive

Re: A draft microservice for gpg verification

 

On Mon, Jul 11, 2011 at 6:47 PM, Thomas Hervé
<thomas.herve@xxxxxxxxxxxxx> wrote:
> Le 11/07/2011 01:24, Robert Collins a écrit :
>> On Mon, Jul 11, 2011 at 8:58 AM, Thomas Hervé
>> <thomas.herve@xxxxxxxxxxxxx> wrote:
>>> Not arguing with those last points, I just wanted to point out that
>>> using Twisted with a Zope server is not that hard. There are 2 cases:
>>>  * You're already using Twisted as WSGI container. In which case, you
>>> are already running Twisted, so it's "just" a matter of being careful
>>> when you're making from from threads. blockingCallFromThread is really
>>> useful for that.
>>
>> We have that turned off due to instability.
>
> I'd be interested to know the problems.

Gary may be able to fill you in, AIUI it was tried but not stable so untried.

>>>  * You're using another container. In this case, you can use a dedicated
>>> thread for running Twisted. There are a couple of pitfalls (not install
>>> the signal handlers, thus not starting processes with Twisted), but
>>> otherwise it works fine. blockingCallFromThread still works as a bonus.
>>
>> The container we're using is zope itself. The security model is thread
>> based, twisted is not. This leads to a range of terrible side effects
>> - from silent security vulnerabilities to attribute access failing for
>> undiagnosable reasons.
>>
>> Your points about how one *in general* might integrate twisted are
>> reasonable, but *zope* specifically plus *twisted* are specifically
>> considerably harder to work well reliably together.
>
> It seems to be you're talking about integrating a threaded application
> with Twisted, and there is not much specific to Zope here. Indeed, you
> should make sure you only send stateless objects to the Twisted thread.
> It's a problem which can happen with Storm as well for example. Granted,
> it's a problem.

Well, individual requests in zope aren't threaded, but the framework
is deeply threaded, and state isn't trivial to isolate.

So I'm sure it can be done, but its not well understood and easy to do right! ;)

-Rob


Follow ups

References