Re: Несколько попыток подключения к backend
ruslan usifov
ruslan.usifov на gmail.com
Пт Окт 22 10:50:30 MSD 2010
Мне кажется что это немножко не то, а именно предположим что очередь
входящих подключений для сокета достигла своего предела, тогда nginx сразу
же вернет 502 без ожиданий.
Сейчас у нас напиан fcgi прокси на питоне с участием twisted framework,
который ка раз и делает то что нам нужно, однако он довольно медленный и
отнимает драгоценное время CPU. Вот я и думаю может существуют более
скоростные решения?
PS: на самом деле этот прокси делает немного больше чем просто
проксирование, а именно он ещё в зависимости от запрашиваемой страницы
делает Http запросы на внешний адрес(таким образом мы выносим все ожидания
сети из php) сохраняет результат в php сессию ну и далее просто проксирует
вызовы между nginx и php.
PSPS: чтобы было хоть немного более понятно чего же я хочу привожу код
проксирующего метода
@inlineCallbacks
def proxy(self):
try:
self.transport.pauseProducing();
l_client = protocol.ClientCreator(reactor, Proxy);
l_attempts = 0;
l_protocol = None;
#устанавливаем соединение с реальным обработчиком (в нашем случае это
php) пытаемся это сделать 3 раза
while l_attempts < 15:
if self.transport.connected:
try:
l_protocol = yield l_client.connectUNIX(self.factory.proxysock);
break;
except Exception as fail:
l_attempts += 1;
if l_attempts < 15:
yield deferLater(reactor, 2, lambda:None);
else:
raise Exception("client disconected from soket before connection
be proxed");
else:
raise Exception("Connection attemps excid");
self.transport.resumeProducing();
for chunk in self._chunks:
l_protocol.transport.write(chunk);
l_protocol._setPeer(self);
self._setPeer(l_protocol);
except Exception as fail:
log.err("Can't proxy: %s" % (fail, ));
self.transport.loseConnection();
22 октября 2010 г. 8:56 пользователь Alex Vorona <voron на amhost.net> написал:
> 22.10.2010 02:03, ruslan usifov wrote:
>
>> А для fastcgi как задать timeout?
>>
>
> http://sysoev.ru/nginx/docs/http/ngx_http_fastcgi_module.html#fastcgi_connect_timeout
>
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20101022/56d3bf69/attachment.html>
Подробная информация о списке рассылки nginx-ru