python2.7.5

oslo.messaging==9.8.0

现象:

从debug日志可以看到rpcServer接收到了rabbitmq的消息, 但是没有调用endpoints中的相应方法

分析:

当executor="eventlet"时

MessageHandlingServer中的_work_executor是futurist._futures.GreenThreadPoolExecutor

当有消息到来时执行_on_incoming方法

self._work_executor.submit(self._process_incoming, incoming)执行后将任务提交到绿色线程池中

但是self._process_incoming却一直不执行

修改代码为:

        f = self._work_executor.submit(self._process_incoming, incoming)
        f.result()

self._process_incoming就执行了, rpc也调通了

 

为什么GreenThreadPoolExecutor submit之后不执行?

换用python3.7也是一样