SQLAlchemy可以配置为非阻塞吗?

时间:2012-04-18 16:45:24

标签: python database asynchronous sqlalchemy nonblocking

我的印象是,通过SQLAlchemy进行的数据库调用将阻塞,并且不适用于除同步代码之外的任何其他内容。我是否正确(我希望我不是!)或者有没有办法将其配置为非阻塞?

2 个答案:

答案 0 :(得分:28)

您可以使用gevent以非阻塞样式使用SQLA。这是一个使用psycopg2的例子,使用psycopg2的coroutine support

https://bitbucket.org/zzzeek/green_sqla/

我也听到人们对pymysql使用相同的想法。由于pymysql是纯Python并使用套接字库,因此gevent将套接字库修补为异步。

答案 1 :(得分:6)

看看Tornado因为他们有一些整洁的非阻塞库,特别是tornado.gen。

我们将它与Momoko一起使用,这是一个用于Tornado的非阻塞psycopg包装器库。到目前为止一直很棒。也许唯一的缺点是你丢失了SQLAlchemy为你提供的所有模型对象。虽然表现不真实。