I recommend not mixing threads with asyncio, I wasted a day trying to replicate all examples here and still got the error "cannot schedule new futures after interpreter shutdown". It seems the asyncio loop is getting shut down by its thread at some point in my case, maybe while switching between threads, and the lib I am using has many async functions in its internals.
I only got rid of this error by removing asyncio from threads. I think it's a valid warning for those who may experience a similar issue.