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 было извлечено&hellip;
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20101022/56d3bf69/attachment.html>


Подробная информация о списке рассылки nginx-ru