Так что я имел блок кода, который выглядел, как это в моем приложении Торнадо:Python Tornado - Сделать вызовы асинхронными?
fetch_results = yield {
'itemOne': make_network_call_one(),
'itemTwo': make_network_call_two(),
'itemThree': make_network_call_three()
}
Эти три сетевых вызовов явно асинхронные.
Теперь у меня есть bool
, который сообщает мне, нужно ли мне действительно выполнять эти сетевые вызовы.
Например:
if should_fetch_item_one:
item_one = yield make_network_call_one()
if should_fetch_item_two:
item_two = yield make_network_call_two()
if should_fetch_item_three:
item_three = yield make_network_call_three()
Что такое лучший/самый Pythonic способ сделать это в еще асинхронным способом? (Я понимаю, что я мог бы проверить все возможные комбинации три BOOLS и выход объекта как первый кодовый блок, но я бы предпочел, чтобы избежать этого.)
(я на Python 2.7)
Спасибо - можете ли вы объяснить, что это делает? У меня есть смутная идея, но я точно не знаю, что делает каждый звонок. Создает ли 'results = yield tasks' новый ключ с тремя ключами: itemOne',' itemTwo' и 'itemThree'? –
Хм, я также должен упомянуть, что я на Python 2.7. Я считаю, что Futures были представлены в Python 3.2? –
«Разрешено» вообще? Могу ли я просто сделать сделать: 'если should_make_call_one: задачи [ 'itemOne'] = make_network_call_one() ... результаты = выход tasks' –