[Twisted-Python] Is there a simple Producer/Consumer example or tutorial?
Gabriel Rossetti
mailing_lists at evotex.ch
Thu Apr 17 08:33:47 MDT 2008
Gabriel Rossetti wrote:
> Drew Smathers wrote:
>> On Thu, Apr 17, 2008 at 3:25 AM, Gabriel Rossetti
>> <mailing_lists at evotex.ch> wrote:
>>
>>> Hello all,
>>>
>>> I was wondering if there is a simple example or a tutorial for the
>>> Producer-Consumer stuff in twisted?
>>>
>>>
>>
>> The only document I'm aware of:
>> http://twistedmatrix.com/projects/core/documentation/howto/producers.html
>>
>>
>> The above explains the interfaces and how to use them, but lacks any
>> examples.
>>
>> Btw ... the last link on the page is broken
>> (http://twistedmatrix.com/projects/core/documentation/howto/twisted.protocols.basic.FileSender).
>>
>>
>>
>>
> Thanks,
>
> I have a producer sort of working thanks to this :
>
> http://itamarst.org/writings/OSCON03/twisted_internet-0.html
>
> and this post :
>
> http://twistedmatrix.com/pipermail/twisted-python/2007-March/014943.html
>
> I have a question though, I was looking at the way all this works by
> using a debugger, and I noticed that in twisted.internet.abstract.py
> in registerProducer() there is the following :
>
> if not streaming:
> producer.resumeProducing()
>
> Why is this done only for the pull producer? Shouldn't it also be
> called for the push producer since to have the data sent one has to
> call either self.transport.write() or resumeProducing() anyways? If
> you look at :
>
> http://itamarst.org/writings/OSCON03/twisted_internet-112.html
>
> it does :
>
> transport.registerProducer(self, 1)
> self.produce()
>
> thus starting the writing process and in the pull producer :
>
> http://itamarst.org/writings/OSCON03/twisted_internet-111.html
>
> it doesn't need to start the writing process explicitly since it's
> started when the producer is registered.
>
> Thank you,
> Gabriel
>
>
>
Oh, and I forgot to ask, since from what I see in the code the only
difference with a push and pull producer is that the push producer is
paused if the data being written/sent is very large (to let the reactor
breath and process other things), if it isn't larger than the buffer it
behaves like a pull producer, correct? If so, then why have both? Am I
mixed up again?
Gabriel
More information about the Twisted-Python
mailing list