2015-07-07 15 views
2

Я ожидал, что приведенный ниже код сможет обрабатывать несколько запросов со 5-секундной задержкой, однако, если одновременно поступают 2 запроса, второй запрос занимает 10 секунд (он ждет первого один для завершения). Что мне здесь не хватает?Нэнси одновременные запросы выполняются синхронно

public class Test : NancyModule 
{ 
    public Test() 
    { 
     Get["/", runAsync: true] = async (x, ct) => 
     { 
      Console.WriteLine("Before"); 
      await Task.Delay(5000); 
      Console.WriteLine("After"); 
      return "Hello World"; 
     }; 
    } 
} 
+0

Отказ от ответственности: Я ничего не знаю о Нэнси. Но похоже, что вы должны работать. Вопрос: Когда вы видите вторую строку 'Before', записанную на консоль? Как только вы отправляете свой второй запрос, или есть 5 секундная задержка, прежде чем вы его увидите? Было бы полезно, если бы вы отредактировали сообщение с тем, что написано на консоли вместе с отметками времени для каждой записи. – sstan

+0

@sstan Он показывает после 5-секундной задержки первого запроса :( – forrestj

+0

Это то, что я думал. Это означает, что ваш метод на самом деле правильно закодирован, а причина, по которой ваши запросы сериализованы, вероятно, больше вверх по течению. Какой инструмент вы используете для отправки обоих запросов одновременно? – sstan

ответ

4

Ваш код верный.

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

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

Смежные вопросы