You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Cajus Pollmeier <ca...@naasa.net> on 2010/05/20 15:45:42 UTC

Re: Multithreaded request/reply server in python

Hiho,

better late than never - I finally found time to take a look at it: thanks
for the code!

I've played a little bit with the threading and tried to measure the
performance of the Python client/server - and it seems that I'm doing
something completely wrong ;-)

If I use your previous mail example as the req/response server and this
micro snippet

8<-----------
from qpid.messaging import *

conn = Connection.establish("localhost")
ssn = conn.session(str(uuid4()))
snd = ssn.sender("requests")
rcv = ssn.receiver('reply-%s; {create:always, delete:always}' % ssn.name)

for i in range(1000):
    msg = Message("The quick brown fox tests the performance")
    msg.reply_to = 'reply-%s' % ssn.name
    snd.send(msg)
    res = rcv.fetch()
    print res.content

conn.close()
8<-----------

, it takes ~30 seconds to process 1000 messages on the local machine. The
server eats 25% of my CPU and qpid itself seems to be bored (0%).

Using the profiler, I can see that python seems to wait for locks for over
90% of its processing time. Is this a GIL issue, or do I need some tweaking
in the way threads get used?

Cheers,
Cajus


On Tue, 13 Apr 2010 15:09:44 -0400, Rafael Schloming <ra...@redhat.com>
wrote:
> I've attached one way to do a multi-threaded request/reply server. There

>   are others as well. Is this the sort of thing you're looking for?
> 
> Note that this uses the latest version of the API from trunk which does 
> have a few naming changes relative to the 0.6 version, however this 
> should work on the 0.6 version as will with some minor tweaks.
> 
> --Rafael
> 
> Cajus Pollmeier wrote:
>> I'm facing a similar problem. Maybe it would be a good thing to move an
>> example to the wiki to allow others a more rapid coding start.
>> 
>> My 5 cent,
>> Cajus
>> 
>> Am 08.04.2010 um 15:26 schrieb Carl Trieloff:
>>>
>>> This can be done with the qpid python libs, there are a few threads on
>>> the list already on the topic.
>>>
>>> If you can't locate them in the archive, shout, and we can maybe post
>>> an example and post it on the
>>> wiki.
>>>
>>> Carl.
>>>
>>>
>>> On 04/07/2010 05:04 AM, Kiss Péter wrote:
>>>> Hi everyone,
>>>>
>>>> I'm quite new to Qpid and AMQP, and trying to figure out,
>>>> how to write a robust multithreaded request/reply server and
>>>> a client in python. (The long term goal is to publish an API
>>>> with apache avro RCP using AMQP as a transport.)
>>>> I'm using the v0.6 Qpid Java broker and the enclosed python library.
>>>> The python API documentation is very poor, the examples are quite
>>>> heplful,
>>>> but too simple. Browsing the code, I found the peer.py and client.py,
>>>> but couldn't find an example how to use them in a real application.
>>>> Any help or code snippet would be much appreciated.
>>>> Or, if I'm digging in the wrong direction, please point me to the
>>>> right way.
>>>>
>>>> I'm aware of the fact, that there are more AMQP libraries for python,
>>>> (txamqp, amqplib), but none of them seems to be as up to date as
qpid.
>>>> (Actually txamqp seems great, but using twisted is a bit
frightening.)
>>>>
>>>> Thanks
>>>> kodiak
>>>>
>>>> <a href=""
>>>>
target="_blank"><br><br>________________________________________________________<br><a
>>>>
href="http://ad.adverticum.net/b/cl,1,73468,1595374,1595372/click.prm">Nálunk
>>>> a nyelvtanfolyamok garantáltan elindulnak! Jelentkezz 20%
>>>> kedvezménnyel a 20 éves Katedra Budapesthez április 7-9.
>>>> között!</a></a>
>>>>
>>>> ---------------------------------------------------------------------
>>>> Apache Qpid - AMQP Messaging Implementation
>>>> Project:      http://qpid.apache.org
>>>> Use/Interact: mailto:users-subscribe@qpid.apache.org
>>>>
>>>>   
>>>
>>> ---------------------------------------------------------------------
>>> Apache Qpid - AMQP Messaging Implementation
>>> Project:      http://qpid.apache.org
>>> Use/Interact: mailto:users-subscribe@qpid.apache.org
>>>
>> 
>> 
>> ---------------------------------------------------------------------
>> Apache Qpid - AMQP Messaging Implementation
>> Project:      http://qpid.apache.org
>> Use/Interact: mailto:users-subscribe@qpid.apache.org
>>

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org