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. _______________________________________________ OpenStack-dev mailing list OpenStack-dev@lists.openstack.org http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev