import asyncio
import pulsar
class App1(pulsar.Application):
queue = None
async def watch_queue(self, worker):
app = worker.app
while 1:
app.queue.put_nowait({'id': 1}) # Here app.queue is None
await asyncio.sleep(1, loop=worker._loop)
def worker_start(self, worker, exc=None):
asyncio.ensure_future(self.watch_queue(worker), loop=worker._loop)
class App2(pulsar.Application):
queue = None
async def watch_queue(self, worker):
app = worker.app
app_queue = app.queue
while 1:
msg = app_queue.get() # Here app.queue is None
if not msg:
await asyncio.sleep(1, loop=worker._loop)
continue
print(msg)
def worker_start(self, worker, exc=None):
asyncio.ensure_future(self.watch_queue(worker), loop=worker._loop)
class Server(pulsar.MultiApp):
def build(self):
App1.queue = asyncio.Queue()
App2.queue = App1.queue
yield self.new_app(App1)
yield self.new_app(App2, prefix='app2')
async def run():
server = Server()
server.start()
How to communicate between apps pulsar, for example, through asyncio.Queue?