> It boils down to the fact that psycopg running in one thread is blocking another thread from executing. Running pyodbc and sqlite3 in exactly the same conditions do not have this effect. > Therefore my (quite possibly wrong) suspicion is that the GIL is not being released timeously, or at least psycopg is doing something different from the others.
>
It occurs to me that there is one difference which could be significant. As far as I know, pyodbc and sqlite do not use sockets to communicate with the database, but psycopg does. Whether that could interfere with the socket-handling in the asyncio thread I have no idea, but it is a possibility.