[Twisted-Python] Is there a simple Producer/Consumer example or tutorial?
Hello all, I was wondering if there is a simple example or a tutorial for the Producer-Consumer stuff in twisted? Thanks, Gabriel
On Thu, Apr 17, 2008 at 3:25 AM, Gabriel Rossetti
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...). -- \\\\\/\"/\\\\\\\\\\\ \\\\/ // //\/\\\\\\\ \\\/ \\// /\ \/\\\\ \\/ /\/ / /\/ /\ \\\ \/ / /\/ /\ /\\\ \\ / /\\\ /\\\ \\\\\/\ \/\\\\\/\\\\\/\\\\\\ d.p.s
On 01:16 pm, drew.smathers@gmail.com wrote:
On Thu, Apr 17, 2008 at 3:25 AM, Gabriel Rossetti
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...).
http://twistedmatrix.com/trac/ticket/3177 strikes again...
Drew Smathers wrote:
On Thu, Apr 17, 2008 at 3:25 AM, Gabriel Rossetti
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...).
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
Gabriel Rossetti wrote:
Drew Smathers wrote:
On Thu, Apr 17, 2008 at 3:25 AM, Gabriel Rossetti
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...).
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
participants (3)
-
Drew Smathers
-
Gabriel Rossetti
-
glyph@divmod.com