Здесь присутствуют асинхронные веб-фреймворки, хотя ORM часто не подходят для асинхронного программирования. Хотя есть ли причина заботиться об этом в типичном сценарии, когда ваша база данных размещена в той же локальной сети, что и ваш сервер для среднего сервиса? В конце концов, время ожидания сетевого ввода-вывода для базы данных будет незначительным по сравнению с запросами из внешних сетей.
В моем конкретном случае у меня есть веб-сервер Python aiohttp, который я хочу подключить к базе данных PostgreSQL. Я бы очень хотел использовать SQL Alchemy в качестве уровня ORM, хотя это подразумевает блокировку запросов, поскольку в слое ORM SQL Alchemy нет поддержки асинхронных драйверов базы данных (есть альтернативы, такие как GINO или async-peewee, хотя они не надежны для производства использовать в моем случае). Этот вопрос относится к любому асинхронному веб-серверу, который может делать запросы на блокировку.
На самом деле это нигде не обсуждается. Споры ведутся о том, готовы ли вы отказаться от стабильной, но синхронной ORM, чтобы использовать асинхронный веб-сервер или нет. Есть ли какой-то вред, который я наблюдаю здесь, учитывая, что база данных будет в той же сети, что и сервер?
Можно порождать потоки для выполнения этих запросов на блокировку, хотя это более важная вещь, которой нужно управлять в вашем приложении, если вы используете ORM, который может неявно генерировать SQL-запросы к базе данных на основе доступа к атрибутам или методам.