I have a more open-ended design oriented question for you here. I have background in Python but not in web nor async programming. I am writing an app to save data collect from websockets 24/24, 7/7 with the aim to minmise data loss.
My initial thoughts is to use Python 3.6 with asyncio, aiohttp and aiofiles.
I don't know whether to use one co-routine per websocket connection or one thread per websocket connection. Performance may not an issue as much as good connection error handling.
To answer your actual question, threads and coroutines will be equally reliable but coroutines are much easier to reason with and much of the modern existing code you'll find to read or copy will use them.
If you want to benefit from multiple cores, much better to use multiprocessing than threads to avoid the trickiness of the GIL.