2016-06-23 1 views
0

Я использую AsyncHTTPClient Tornado для получения URL-адреса несколько раз. Я передаю другой обратный вызов с каждым запросом.Do Tornado AsyncHTTPClient fetch callbacks вызываются в порядке запроса или ответа?

Если я отправляю запросы A, B (с соответствующими обратными вызовами Callback_A и Callback_B) на URL-адрес, но ответы возвращаются в обратном порядке B, A. Должен ли я ожидать, что обратные вызовы будут вызываться в порядке Callback_A, Callback_B или они будут вызваны в обратном порядке?

Я бы хотел, чтобы обратные вызовы вызывались в порядке ответов (так Callback_B, Callback_A). Если это не поведение по умолчанию, есть ли способ сделать это вместо этого?

ответ

0

Обратные вызовы выполняются как можно скорее после завершения события, для которого они ждут. Таким образом, они вызываются в порядке ответа.

+0

Итак, вы ожидаете увидеть Callback_B, а затем Callback_A? Я только что проверил 2 URL-адреса, один из которых находится далеко (Китай) и тот, который находится рядом (в моей интрасети), в этом порядке. Обратный вызов передавался дальше, чем первый, напечатанный первым. Таким образом, это означает, что единственный порядок, который имеет значение, - это один из запросов (т. Е. Порядок, в котором обратные вызовы были переданы на вызовы 'fetch()'). –

+0

Обратные вызовы выполняются как можно скорее после завершения события, для которого они ждут. Таким образом, они вызываются в порядке ответа. Если вы используете пример Minimal, Complete и Verifiable (http://stackoverflow.com/help/mcve), мы могли бы увидеть, если вы допустили ошибку. –

+0

Хорошо, я нашел ошибку в своем коде. Повторите тест, отправив 3 файла на удаленный сервер, отслеживая их на Wireshark, и действительно, вызывающие вызовы вызываются в правильном порядке, что является порядком ответа. Еще раз спасибо AJ. –

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

  • Нет связанных вопросов^_^