Действительно ли возможно сделать асинхронный / параллельный запрос базы данных в приложении Django?

У меня есть веб-страницы, которые берут 10 - 20 запросов базы данных для получения всех необходимых данных.

Обычно после того, как запрос отослан, поток/процесс Django заблокирован, ожидая результатов для возвращения, затем он возобновил бы выполнение, пока он не достигает следующего запроса.

Есть ли существует какой-либо способ выпустить все запросы асинхронно так, чтобы они могли быть обработаны сервером (серверами) базы данных параллельно?

Я использую MySQL, но хотел бы услышать о решениях для других баз данных также. Например, я слышал, что Postgresql имеет асинхронную клиентскую библиотеку - как я использовал бы это в этом случае?

19
задан Continuation 12 February 2010 в 00:33
поделиться

1 ответ

Похоже, из этой недавней записи в блоге следует, что она не встроена ни в структуру 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, это может быть нормально.

5
ответ дан 30 November 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: