Hmm, unfortunately it didnt work. Maybe its lack of my understanding
of inlineCallbacks (this is the first I am using it). Anyway, I have
code pasted at:

http://www.bpaste.net/show/9823/ - modified from txamqp samples.

As can be seen form the code, I am not sure how the control flow is
given back to other deferred when we are doing while True: or am I
missing something?

Thus which queue, I consume first seems to be only getting the message
and I am missing the other one.

Where am I going wrong?

I think I should reread how inlineCallbacks work again anyway....

On Mon, Sep 27, 2010 at 7:52 AM, Esteve Fernandez
<esteve.fernan...@gmail.com> wrote:
> Hi Ritesh,
>
> you can have two functions that returns a Deferred, each consuming
> from a different queue and build a DeferredList with those two
> Deferreds. For example:
>
>
> @defer.inlineCallbacks
> def consume(consumerTag):
>    queue = yield conn.queue(consumerTag)
>
>    while True:
>        msg = yield queue.get()
>        doSomething(msg)
>        if msg is STOP_TOKEN: # STOP_TOKEN is something the producer
> may send to stop the consumer
>            break
>
> @defer.inlineCallbacks
> def myFunc():
>    d1 = consume("consumerTag1")
>    d2 = consume("consumerTag2")
>
>    dl = DeferredList([d1, d2], fireOnOneCallback=True)
>    yield dl
>    print "Finished"
>
> the key is in fireOnOneCallback=True, this way when any of the two
> functions finish, the Deferred will be fired and the code flow will
> continue.
>
> Cheers.
>



-- 
Ritesh
http://www.riteshn.com

_______________________________________________
Mailing list: https://launchpad.net/~txamqp-user
Post to     : txamqp-user@lists.launchpad.net
Unsubscribe : https://launchpad.net/~txamqp-user
More help   : https://help.launchpad.net/ListHelp

Reply via email to