Hello! On Thu, May 01, 2014 at 07:45:02AM -0400, saaleb wrote:
> Maxim Dounin Wrote: > ------------------------------------------------------- > > Hello! > > > > On Tue, Apr 29, 2014 at 04:51:18PM -0400, saaleb wrote: > > > > > И снова здравствуйте. > > > > > > Изучал upstream модули как идущие в комплекте, так и сторонние, но > > есть > > > некоторые неясные моменты. > > > > > > 1. create_request - тут создаем запрос, передаем его upstream. > > Немного > > > непонятно, как именно идет взаимодействие с upstream. Мне, например, > > > требуется сформировать структуру из запроса и вызвать определенную > > функцию > > > из сторонней библиотеки. Назовем ее send(). Могу ли я вызвать эту > > функцию из > > > create_request или нужно использовать более низкий уровень для > > совмещения > > > моего send() и механизма работы с upstream? > > > > Взаимодействием собственно с бекендами занимается сам модуль upstream. > > > > Задача реализации протокола - сформировать запрос, который будет > > отправлен. > > > > Если вам требуется для отправки запроса использовать стороннюю > > библиотеку - модуль upstream вам не подойдёт. > > Хорошо. Какой тогда существует путь в nginx для взаимодействия со сторонней > библиотекой, учитывая, что время ответа не отпределено, т.е. надо как-то > обрабатывать таймауты. Точно так же, как это делает, например, тот же модуль upstream - взводить таймер, и возвращать ошибку при его срабатывании. Основной вопрос - это умеет ли библиотека работать с неблокирующимися сокетами, и умеет ли эти самые сокеты отдавать наружу, чтобы их можно было встроить в event loop nginx'а. Если не умеет - то надо учить. Впрочем, даже если умеет - задача не то чтобы тривиальная. Зачастую проще и правильнее выкинуть библиотеку, и реализовать собственно сам протокол в рамках модуля upstream. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
