[openstack-dev] [oslo] Asyncio and oslo.messaging
Mark McLoughlin
markmc at redhat.com
Mon Jul 7 18:18:38 UTC 2014
On Mon, 2014-07-07 at 15:53 +0100, Gordon Sim wrote:
> On 07/07/2014 03:12 PM, Victor Stinner wrote:
> > The first step is to patch endpoints to add @trollius.coroutine to the methods,
> > and add yield From(...) on asynchronous tasks.
>
> What are the 'endpoints' here? Are these internal to the oslo.messaging
> library, or external to it?
The callback functions we dispatch to are called 'endpoint methods' -
e.g. they are methods on the 'endpoints' objects passed to
get_rpc_server().
> > Later we may modify Oslo Messaging to be able to call an RPC method
> > asynchronously, a method which would return a Trollius coroutine or task
> > directly. The problem is that Oslo Messaging currently hides "implementation"
> > details like eventlet.
>
> I guess my question is how effectively does it hide it? If the answer to
> the above is that this change can be contained within the oslo.messaging
> implementation itself, then that would suggest its hidden reasonably well.
>
> If, as I first understood (perhaps wrongly) it required changes to every
> use of the oslo.messaging API, then it wouldn't really be hidden.
>
> > Returning a Trollius object means that Oslo Messaging
> > will use explicitly Trollius. I'm not sure that OpenStack is ready for that
> > today.
>
> The oslo.messaging API could evolve/expand to include explicitly
> asynchronous methods that did not directly expose Trollius.
I'd expect us to add e.g.
@asyncio.coroutine
def call_async(self, ctxt, method, **kwargs):
...
to RPCClient. Perhaps we'd need to add an AsyncRPCClient in a separate
module and only add the method there - I don't have a good sense of it
yet.
However, the key thing is that I don't anticipate us needing to change
the current API in a backwards incompatible way.
Mark.
More information about the OpenStack-dev
mailing list