dimanjy
@dimanjy
Недопрограммист и полуинженер.

Как сделать код совместимым с gevent?

Привет! Всех с наступающими Праздниками, особенно тех, у кого это праздник, в основном, Труда :)

У меня есть некоторое недопонимание с переходом на gevent. Пишу на Django и там вроде все более-менее понятно: подключил все необходимые модули для работы с gevent, про-манки-патчил все, как полагается, сделал пул соединений с базой, поддерживающий gevent. Все работает, распараллелилось.

Теперь непосредственно в бизнес-логике приложения. Что мне делать? У меня есть вьюхи, которые в ответ на запрос довольно долго парсят некие документы. По две-три секунды. Иногда и по 10 секунд. При обработке используются сторонние библиотеки.

Если я правильно понимаю суть gevent, то параллельность работает ровно до тех пор, пока не встретится код, который полностью заблокирует выполнение greenlet'ов. Т.е. если в какой-либо внешней библиотеке встретятся длительные вычисления, то моё приложение перестанет принимать внешние соединения до завершения работы несовместимого с gevent кода, так? Или же просто заблокируется именно этот greenlet с вызовом этой библиотеки, но другие соединения все также буду приниматься?

Если верно мое первое предположение, то следующий вопрос такой: какой выход из этого тупика? Переписывать сторонние библиотеки для поддержки gevent?
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы