我对应用程序开发相对较新,但这里什么都没有。
我一直在从事一个项目,该项目使用 Tornado 服务器和 SQLAlchemy 的 ORM 进行数据库管理/访问(在后端使用 postgres)。
在项目开始时,我没有考虑过使用 SQLAlchemy 会阻止我利用 Tornado 的异步功能的可能性(因为 SQLAlchemy 的数据库调用显然“阻塞”了线程)。
您对如何使用 Tornado+SQLA+postgres 实现异步兼容设置有什么建议吗?
我对应用程序开发相对较新,但这里什么都没有。
我一直在从事一个项目,该项目使用 Tornado 服务器和 SQLAlchemy 的 ORM 进行数据库管理/访问(在后端使用 postgres)。
在项目开始时,我没有考虑过使用 SQLAlchemy 会阻止我利用 Tornado 的异步功能的可能性(因为 SQLAlchemy 的数据库调用显然“阻塞”了线程)。
您对如何使用 Tornado+SQLA+postgres 实现异步兼容设置有什么建议吗?
看看 aiopg - https://github.com/aio-libs/aiopg
它是一个用于 postgres 的 Python 3.4 异步适配器,包括 sqlalchemy 支持。我自己还没有尝试过,但是在寻找 postgres 和 tornado 的异步库时发现了它。我正在使用 Momoko,但它只提供原始 psycopg2 层。
请记住,最新版本的 Tornado 支持 asyncio,因此 asyncio 库现在可以与 Tornado 一起使用。