У меня есть веб-страницы, которые берут 10 - 20 запросов базы данных для получения всех необходимых данных.
Обычно после того, как запрос отослан, поток/процесс Django заблокирован, ожидая результатов для возвращения, затем он возобновил бы выполнение, пока он не достигает следующего запроса.
Есть ли существует какой-либо способ выпустить все запросы асинхронно так, чтобы они могли быть обработаны сервером (серверами) базы данных параллельно?
Я использую MySQL, но хотел бы услышать о решениях для других баз данных также. Например, я слышал, что Postgresql имеет асинхронную клиентскую библиотеку - как я использовал бы это в этом случае?
Похоже, из этой недавней записи в блоге следует, что она не встроена ни в структуру django, ни в структуру rails. Я думаю, что он хорошо освещает проблему и его стоит прочитать вместе с комментариями.
http://www.eflorenzano.com/blog/post/how-do-we-kick-our-synchronous-adiction/ (неработающая ссылка)
Я помню, как Кэл Хендерсон упоминал об этом недостатке где-то в его превосходной речи http://www.youtube.com/watch?v=i6Fr65PFqfk
Мое наивное предположение, что вы могли бы что-то взломать с помощью отдельных библиотек Python, но потеряете много ORM / template материал для ленивой оценки, который django указывает на то, что вы могли бы также использовать другой стек. Опять же, если вы оптимизируете только несколько представлений в большом проекте django, это может быть нормально.