Подходит ли веб-сервер Tornado для приложения, которое часто вызывает внешние веб-службы? - PullRequest
0 голосов
/ 15 ноября 2011

Я работаю над простым приложением (бэкэнд для интерфейса в Flex), которое в большинстве сценариев выполняет следующее:

  • вызывает внешний веб-сервис REST-ful
  • fetchнекоторые вещи из локальной базы данных
  • обрабатывают и возвращают оба результата

Получит ли мое приложение выгоду от того факта, что веб-сервер Tornado неблокирует?Я имею в виду масштабируемость и производительность.Какая здесь будет горлышко бутылки?

1 Ответ

0 голосов
/ 19 ноября 2011

О да. Это определенно принесет пользу.

Поскольку сервер занят загрузкой внешних ресурсов, он может продолжать обслуживать другие вызовы, поскольку интерпретатор не заблокирован.

В обычных веб-серверах вы используете что-то вроде Gevent для достижения этой цели.

Кроме того, с Tornado 2.1 и выше, Step1 и Step2 могут быть объединены как:

def get (self):

http_client = AsyncHTTPClient()
response1, response2 = yield [gen.Task(http_client.fetch, url1),
                              gen.Task(http_client.fetch, url2)]
...