I found a solution. The key is to pass the two apps to the worker:
import asyncio
import nest_asyncio
nest_asyncio.apply()
async def start_worker(worker: faust.Worker) -> None:
await worker.start()
def manage_loop():
loop = asyncio.get_event_loop_policy().get_event_loop()
try:
worker = faust.Worker(*[app1, app2], loop=loop)
loop.run_until_complete(start_worker(worker))
loop.run_forever()
finally:
worker.stop_and_shutdown()
worker.close()
if __name__=='__main__':
manage_loop()
And then to start the app you need to call
python test_faust.py worker