Может ли SQLAlchemy быть настроен на неблокирование?

У меня создается впечатление, что запросы базы данных через SQLAlchemy будут блокироваться и не пригодны для использования ни в чем другом, кроме синхронного кода. Я прав (надеюсь, что нет!), Или есть способ настроить его как неблокирующийся?

3 Solutions collect form web for “Может ли SQLAlchemy быть настроен на неблокирование?”

Вы можете использовать SQLA в неблокирующем стиле, используя gevent . Вот пример использования psycopg2, используя поддержку сопрограммы psycopg2:

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

Я также слышал, что люди используют ту же идею с pymysql . Поскольку pymysql находится в чистом Python и использует библиотеку сокетов, gevent исправляет библиотеку сокетов как асинхронную.

Взгляните на Tornado, поскольку у них есть аккуратные неблокирующие библиотеки, особенно tornado.gen.

Мы используем это вместе с Momoko, неблокирующей оболочкой psycopg для Tornado. До сих пор это было здорово. Возможно, единственным недостатком является то, что вы теряете все объекты объектов модели, которые дает вам SQLAlchemy. Однако производительность нереальная.

Без помощи greenlet ответ отрицательный, в контексте asyncio.

Однако в asyncio можно использовать только часть SQLAlchemy. Пожалуйста, найдите пример в проекте GINO , где мы использовали только ядро ​​SQLAlchemy без ядра и полного контекста выполнения, чтобы сделать простой ORM в asyncio.

  • SQLAlchemy с несколькими первичными ключами не устанавливает автоматически
  • SQLAlchemy StaleDataError при удалении элементов, вставленных через ORM sqlalchemy.orm.exc.StaleDataError
  • тестовая колба sql alchemy
  • Почему SQLAlchemy / mysql не учитывает меня?
  • Соединение закрывается, когда событие SQLAlchemy запускает задачу Celery
  • Пароль не зашифровывается при обновлении
  • Как использовать рефлексию / автозагрузку в колбе-sqlalchemy
  • Назначение SQLAlchemy над MySQLdb
  • Python - лучший язык программирования в мире.