nameko stuck in a self.__dispatch() call for a service sending an event to another service

Ah, I see what you’re trying to do now.

A Nameko entrypoint for NATS is absolutely the way to go. It’s not too difficult to create entrypoints; if there was a Python NATS library that wasn’t tied to an eventloop (I only see the asyncio and tornado versions) it would be easy.

I don’t know about integrating asyncio-based libraries into an eventlet ecosystem though. I think you could probably put the reader loop into a tpool

There is no timeout for workers so your eventloop-in-worker would keep running until it voluntarily stops. This would be a weird pattern though, I’d recommend trying to refactor your NATS consumer into a proper entrypoint if you can.