Создание Django зеленого цвета

У меня есть команда управления Django, которая делает тысячи запросов TCP/UDP. Я использовал Gevent, чтобы ускорить это, поскольку я изменил свой код, чтобы работать как сопрограммы. Сокеты больше не блокируются, но из того, что я читал, части Django все еще не зеленые. (По зеленому, я имею в виду использование зеленых.)

Не могли бы вы рассказать мне, какие части Django не зеленые, и что я могу сделать, чтобы сделать их зелеными? Я думаю, что есть некоторые части, связанные с БД. Существуют ли библиотеки/патчи для Django, которые помогают мне сделать его зеленым?

Я не слишком обеспокоен тем, что цикл запроса/ответа зеленый или нет, может ли Гуникорн помочь мне?

Спасибо

Ответ 1

Патчер обезьяны gevent исправит стандартную библиотеку, которая будет дружественной к Greenlet. Это должно занять много обычных вызовов Django.

from gevent import monkey; monkey.patch_all()

В отношении баз данных, как правило, блокируются интерфейсы. Если вы используете PostgreSQL, посмотрите в psyco_gevent на патч обезьяны psycopg2, чтобы сотрудничать с gevent.

Ответ 2

gevent не будет зелеными сторонними библиотеками, так как там используются либо C-расширения, либо другие сторонние библиотеки, которые используют расширения C. Если используются стандартные библиотеки, gevent может обезопасить их.

Некоторые драйверы баз данных, конечно, полагаются на реализацию самой базы данных. Просто потому, что вы используете озелененную библиотеку, это не значит, что ваша база данных будет вести себя "зеленым". Это также необходимо вызвать на уровне базы данных. Например, Prosgresql поддерживает обработку async-команд с версии 2.2.

Также вы можете проверить Проекты с использованием gevent.

Gunicorn облегчит вам жизнь, по крайней мере, когда вы начнете развертывать свое приложение. Также во время разработки я бы рекомендовал gunicorn (с gevent) над обычной командой dzhango runningerver просто потому, что он может обрабатывать одновременные запросы быстрее.