Могу ли я сделать Django «зеленым»?

Общая картина такова: Я хочу использовать eventlet в каком-то приложении, которое выполняет асинхронный ввод-вывод при внешней работе с моделями Django. Внешне работать с Django просто (см. Django: Как я могу ...

Общая картина такова: Я хочу использовать eventlet в каком-то приложении, которое выполняет асинхронный ввод-вывод при внешней работе с моделями Django. Внешне работать с Django просто (см. Django: Как я могу ...

Общая картина такова: Я хочу использовать eventlet в каком-то приложении, которое выполняет асинхронный ввод-вывод при внешней работе с моделями Django. Работать с Django извне просто (см. Django: Как я могу использовать классы моей модели для взаимодействия с моей базой данных извне Django? ), но это не главная проблема.

Я полагаю (я не проверено), что использование Django из гринлетов опасно. Фактически, в случае psycopg2 у нас есть это предупреждение (см. http://www.initd.org/psycopg/docs/advanced.html#support-to-coroutine-libraries ):

Связи Psycopg не зеленые потокобезопасный и не может использоваться одновременно разными зелеными Threads

В Django есть одно соединение с базой данных на поток (верно?), и поэтому при использовании это может привести к пугающим сценариям. Можно ли как-то вручную предоставить объект подключения? Или сделать его "локальным зеленым"?

Моя мотивация - использовать пул соединений из eventlet ( http://eventlet.net/doc/modules/db_pool.html ), чтобы я мог ускорить мое приложение, привязанное к вводу-выводу.

6
задан Community 23 May 2017 в 12:24
поделиться